我有以下代码:
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 中有一个大熊猫数据框,大约有 50 万行和 8 列,在 auftrag 中有一个带有子列表的列表,包含来自熊猫数据框的条目。 对于试用,您可以使用这些示例数据: https://1drv.ms/x/s!AnRIWP-3awPOg9YD2oo_INQjCCq2PA?e=IsRayA
导入使用:
daten_e303 = pandas.read_excel("Demo.xlsx")
您知道如何将方法从大约 2 小时缩短到 10 分钟以下吗?
感谢您的帮助, 拉斯
答案 0 :(得分:0)
来自不同论坛的人给了我一个完美的解决方案:
auftrag = []
daten_e303.Unterauftrag.replace(numpy.nan, 0, inplace=True)
print("Filtern nach Auftrag und Separieren")
for _, y in daten_e303.groupby(["Rechnungsnummer", "Auftragsart", "Unterauftrag"]):
auftrag.append(y.to_dict("records"))