Ohne parallele Programmierung kann ich linken und rechten Datenrahmen auf key
Spalte unter Verwendung von Code unter, aber es wird zu langsam, da beide sehr groß sind. Gibt es einen Weg, wie ich es effizient parallelisieren kann?Wie zwei Pandas Datenframe parallel verschmelzen (Multithreading oder Multiprocessing)
Ich habe 64 Kerne, und so praktisch kann ich 63 von ihnen verwenden, um diese beiden Daten zu verschmelzen.
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
result = pd.merge(left, right, on='key')
Ausgang wird sein:
left:
A B key
0 A0 B0 K0
1 A1 B1 K1
2 A2 B2 K2
3 A3 B3 K3
right:
C D key
0 C0 D0 K0
1 C1 D1 K1
2 C2 D2 K2
3 C3 D3 K3
result:
A B key C D
0 A0 B0 K0 C0 D0
1 A1 B1 K1 C1 D1
2 A2 B2 K2 C2 D2
3 A3 B3 K3 C3 D3
ich dies parallel tun will, damit ich es bei der Geschwindigkeit tun.
Selbst wenn eine "Multithreading" Lösung möglich ist, sollten Sie Ihre Datenrahmen in Stücke, kombiniere sie parallel (wahrscheinlich das 'Threading verwenden, haben zu brechen 'Modul) und dann die Brocken zusammen setzen. All das würde nur Ihre Geschwindigkeit um einen Faktor von> 4 verbessern (vorausgesetzt, Sie haben 4 Kerne) ... –
Ich habe 64 Kerne, und so kann ich praktisch 63 von ihnen verwenden, um diese beiden Daten zusammenzuführen. – contactlp