【发布时间】:2021-06-22 13:51:48
【问题描述】:
我有以下代码:
auftrag = []
for datensatz_nummer, datensatz in daten_e303.iterrows():
if len(auftrag) != 0:
found = False
for x in auftrag:
if x[0]["Rechnungsnummer"] == datensatz["Rechnungsnummer"]:
if x[0]["Auftragsart"] == datensatz["Auftragsart"]:
if x[0]["Mandant"] == datensatz["Mandant"]:
if x[0]["Unterauftrag"] == datensatz["Unterauftrag"]:
x.append(dict(datensatz))
found = True
break
if not found:
auftrag.append([dict(datensatz)])
else:
auftrag.append([dict(datensatz)])
在 daten_e3030 中有一个大型 pandas-dataframe,大约有 50 万行和 8 列,在 auftrag 中有一个带有子列表的列表,其中包含来自 panda-dataframe 的条目。 对于试用,您可以使用这些示例数据: https://1drv.ms/x/s!AnRIWP-3awPOg9YD2oo_INQjCCq2PA?e=IsRayA
导入使用:
daten_e303 = pandas.read_excel("Demo.xlsx")
您有什么想法,我如何将方法从大约 2 小时缩短到 10 分钟以下?
感谢您的帮助, 拉尔斯
【问题讨论】:
-
如果您向社区提供更大数据框的示例数据,您将获得更快更好的答案。会有一些人花时间浏览您的代码并尝试了解您要查找的内容。相反,添加一个示例数据框,并发布您的预期输出。
-
@ashkangh 感谢您的提示!
-
@LarsK1 你能解释一下这个函数的作用吗?比较来自 xls 和输出的输入数据,我看不出有什么区别。
-
@Andrej Kesely 它读取 excel 文件,然后从我的发票系统中汇总数据,这些数据属于一项工作。因此,它比较 invoicenumber 和工作类型以及 customer-id 和 sub-job-id 是否与 auftrag-list 中的任何条目相同,如果不是,则创建一个新条目,否则将其附加到与数据对应的列表中之前添加的。并且写入子列表的数据被格式化为dict,以便之后处理......
标签: python arrays pandas loops search