Без параллельного программирования я могу слить левый и правый данные на столбце key
, используя приведенный ниже код, но он будет слишком медленным, так как оба очень большие. есть ли способ, которым я могу это сделать, эффективно распараллеливать?Как объединить две части данных pandas параллельно (многопоточность или многопроцессорность)
У меня 64 ядра, и поэтому практически я могу использовать 63 из них, чтобы объединить эти два кадра данных.
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')
выход будет:
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
Я хочу сделать это параллельно, так что я могу сделать это на скорости.
Даже если решение «многопоточность» возможно, вам придется разбить свои dataframes на куски, объединить их параллельно (возможно, с использованием 'многопоточность 'module), а затем объединить куски. Все это только улучшит вашу скорость в 4 раза (учитывая, что у вас есть 4 ядра) ... –
У меня 64 ядра, и поэтому практически я могу использовать 63 из них, чтобы объединить эти два блока данных. – contactlp