генерировать перестановки для большого набора данных, используя dask и pandas - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующая структура таблицы в качестве фрейма данных 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))))

Однако, это также может длиться вечно.

У вас есть какие-либо рекомендации о том, как я могусделать этот процесс еще быстрее?(Также есть возможность разбивать и обрабатывать данные для каждого ключа отдельно и в конце сохранять все данные в большом кадре данных, но, возможно, у вас, ребята, есть лучший вариант?)

Спасибо.

...