Ich habe zwei Gruppen, eine mit den Zeilen, die als Gruppen verarbeitet werden sollen, eine andere mit zu betrachtenden Gruppen.Multiprocessing-Gruppe python anwenden
test = pd.DataFrame({'Address1':['123 Cheese Way','234 Cookie Place','345 Pizza Drive','456 Pretzel Junction'],'city':['X','U','X','U']})
test2 = pd.DataFrame({'Address1':['123 chese wy','234 kookie Pl','345 Pizzza DR','456 Pretzel Junktion'],'city':['X','U','Z','Y'] , 'ID' : ['1','3','4','8']})
gr1 = test.groupby('city')
gr2 = test2.groupby('city')
Derzeit bewerbe ich meine Funktion auf jede Zeile der Gruppe,
gr1.apply(lambda x: custom_func(x.Address1, gr2.get_group(x.name)))
Ich weiß nicht, aber, wie auf diesem Multiprozessing zu tun. Bitte beraten.
EDIT: - Ich habe versucht, dask
zu verwenden, aber ich kann den gesamten Datenrahmen nicht zu meiner Funktion in dask übergeben - da es eine Beschränkung mit seiner apply
Funktion gibt. Und ich habe versucht, dask apply auf meine gr1 (group) anzuwenden, aber da ich den index in meiner benutzerdefinierten Funktion setze, gibt dies einen Fehler aus, der sagt "Zu viele Indexer".
hier mit Dask, gibt dies mir ein Fehler - 'Pandas' object has no attribute 'city'
ddf1 = dd.from_pandas(test, 2)
ddf2 = dd.from_pandas(test2, 2)
dgr1 = ddf1.groupby('city')
dgr2 = ddf2.groupby('city')
meta = pd.DataFrame(columns=['Address1', 'score', 'idx','source_index'])
ddf1.map_partitions(custom_func, x.Address1, dgr2.get_group(x.city).Address1,meta=meta).compute()
werfen Sie einen Blick auf 'dask', es ist gut mit Pandas integriert. – suvy
Yeah sah das, aber dask unterstützt keine Übergabe von Datenrahmen mit der Apply-Funktion. Zweitens, als ich versuchte, dask auf Gruppe anzuwenden, scheitert es mit "zu vielen Indexern", während ich versuche, den Index innerhalb meiner custom_func zu setzen. –
dask apply sollte reihenweise arbeiten, für spaltenweise map_partition. Vielleicht ist es cool, editieren Sie Ihre Frage mit was Sie versucht haben und Fehler gemeldet. – suvy