【发布时间】:2021-07-16 00:06:31
【问题描述】:
我自愿帮助一家乡村图书馆完成他们的一些任务。他们想向他们的成员发送消息。有了他们给我的信息,他们希望得到我稍后展示的输出。
他们有以下.csv 文件(这是一个例子):
import pandas as pd
file= ("biblioteca.csv")
df = pd.read_csv(file, sep=',', dtype='str')
df
这是内容:
Fecha Socio Doc Nombre Libro Volumenes Dias_Vto
0 9/1/2021 1 47890056 Ruben Dario Harry Potter - Espanol 1 28
1 4/2/2021 1 47890056 Ruben Dario Harry Potter - Ingles 1 16
2 3/3/2021 1 47890056 Ruben Dario El pajaro canta hasta morir 1 16
3 1/1/2021 1 47890056 Ruben Dario Criptonomicom 3 35
4 1/2/2021 2 46859754 Ernesto Sabato Cuentos de la selva 1 6
5 5/3/2021 2 46859754 Ernesto Sabato Los pajaros 1 12
6 2/2/2021 3 39845712 Jose Sacristan Vida de un Ausente 1 21
7 2/2/2021 3 39845712 Jose Sacristan Alter Ego 1 19
8 2/2/2021 3 39845712 Jose Sacristan Cookbook 5 2
我创建了一些函数,其中包含他们想要发送给成员的信息:
gb = df.groupby(['Socio'])
def nombre(fila):
return ("Fecha {} Documento {}".format(fila.Fecha, fila.Doc))
def sucursal(fila):
return ("Sucursal - Monte Castro")
def libros(fila):
return ("Don {}, retiró el dia {}, el libro: {} que consta de {} volumen/es;1; {}".format(fila.Nombre, fila.Fecha, fila.Libro, fila.Volumenes, fila.Doc))
def vencimiento(fila):
return ("El libro {} vence dentro de {} dia/s. {}".format(fila.Libro, fila.Dias_Vto, fila.Doc))
print('Resumen Biblioteca')
for k, gp in gb:
for idx, fila in gp.iterrows():
print('Fecha - Nombre')
print(nombre(fila))
print('Sucursal biblioteca')
print(sucursal(fila))
print('Libros solicitados')
for idx, fila in gp.iterrows():
print(libros(fila))
print('Vencimientos')
for idx, fila in gp.iterrows():
print(vencimiento(fila))
print('FIN Socio - Biblioteca Sucursal - Monte Castro')
print('---------')
print()
print()
迭代的问题在于,它将标题乘以与迭代每一行的行一样多。第一个成员 (Socio) 就是这种情况。
Resumen Biblioteca
Fecha - Nombre
Fecha 9/1/2021 Documento 47890056
Sucursal biblioteca
Sucursal - Monte Castro
Libros solicitados
Don Ruben Dario, retiró el dia 9/1/2021, el libro: Harry Potter - Espanol que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 4/2/2021, el libro: Harry Potter - Ingles que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 3/3/2021, el libro: El pajaro canta hasta morir que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 1/1/2021, el libro: Criptonomicom que consta de 3 volumen/es;1; 47890056
Vencimientos
El libro Harry Potter - Espanol vence dentro de 28 dia/s. 47890056
El libro Harry Potter - Ingles vence dentro de 16 dia/s. 47890056
El libro El pajaro canta hasta morir vence dentro de 16 dia/s. 47890056
El libro Criptonomicom vence dentro de 35 dia/s. 47890056
FIN Socio - Biblioteca Sucursal - Monte Castro
Fecha - Nombre
Fecha 4/2/2021 Documento 47890056
Sucursal biblioteca
Sucursal - Monte Castro
Libros solicitados
Don Ruben Dario, retiró el dia 9/1/2021, el libro: Harry Potter - Espanol que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 4/2/2021, el libro: Harry Potter - Ingles que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 3/3/2021, el libro: El pajaro canta hasta morir que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 1/1/2021, el libro: Criptonomicom que consta de 3 volumen/es;1; 47890056
Vencimientos
El libro Harry Potter - Espanol vence dentro de 28 dia/s. 47890056
El libro Harry Potter - Ingles vence dentro de 16 dia/s. 47890056
El libro El pajaro canta hasta morir vence dentro de 16 dia/s. 47890056
El libro Criptonomicom vence dentro de 35 dia/s. 47890056
FIN Socio - Biblioteca Sucursal - Monte Castro
预期的输出是:
Resumen Biblioteca
Fecha - Nombre
Fecha 9/1/2021 Documento 47890056
Sucursal biblioteca
Sucursal - Monte Castro
Libros solicitados
Don Ruben Dario, retiró el dia 9/1/2021, el libro: Harry Potter - Espanol que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 4/2/2021, el libro: Harry Potter - Ingles que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 3/3/2021, el libro: El pajaro canta hasta morir que consta de 1 volumen/es;1; 47890056
Don Ruben Dario, retiró el dia 1/1/2021, el libro: Criptonomicom que consta de 3 volumen/es;1; 47890056
Vencimientos
El libro Harry Potter - Espanol vence dentro de 28 dia/s. 47890056
El libro Harry Potter - Ingles vence dentro de 16 dia/s. 47890056
El libro El pajaro canta hasta morir vence dentro de 16 dia/s. 47890056
El libro Criptonomicom vence dentro de 35 dia/s. 47890056
FIN Socio - Biblioteca Sucursal - Monte Castro
对于每个成员 (Socio)。
同样的情况发生在所有成员身上。 感谢您的帮助!!!
【问题讨论】:
-
第二个循环中有两个 for 循环,它也在另一个循环中。你需要那么多吗?
-
第一个循环用于组,第一个内部用于标题,内部两个是库需要向成员显示的信息。石南花的循环问题,这应该只出现一次。里面的 2 工作正常
-
您不需要为“Libros solicitados”和“Vencimientos”设置 2 个单独的循环。您可以将这些打印件放在第一个
for idx, fila in gp.iterrows():中,它会正常工作。 -
我尝试删除第二个循环,但结果远非预期。它正在重复标题和行 1 到 1.... 这是一场噩梦
-
您能发布您的预期输出吗?它不必是每一行,只是带有几个例子的一般概念。这样,人们就可以准确地看到您想要的内容。
标签: python-3.x pandas loops iterator