У меня есть следующая структура таблицы в качестве фрейма данных pandas (df
):
Key Value
1 A
1 B
1 C
1 D
1 E
1 F
2 A
2 G
2 C
2 F
2 B
3 X
3 Y
3 Z
Из этой таблицы я генерирую комбинацию всех значений для каждого ключа, используя следующую команду:
import itertools
df_new = df.groupby('Key').apply(lambda x: pd.DataFrame(list(itertools.permutations(x['Value'],2))))
Это работает нормально, и я получаю правильные результаты.Однако, когда размер данных увеличивается (около 20 миллионов строк в df
), эта функция работает вечно.
Именно поэтому я попытался использовать dask
:
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=2)
df_new = ddf.groupby('Key').apply(lambda x: pd.DataFrame(list(itertools.permutations(x['Value'],2))))
Однако, это также может длиться вечно.
У вас есть какие-либо рекомендации о том, как я могусделать этот процесс еще быстрее?(Также есть возможность разбивать и обрабатывать данные для каждого ключа отдельно и в конце сохранять все данные в большом кадре данных, но, возможно, у вас, ребята, есть лучший вариант?)
Спасибо.