使用dask和pandas为大型数据集生成排列

时间:2019-04-02 13:23:28

标签: python pandas dask

我具有以下表格结构作为熊猫数据框(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))))

这很好,我得到正确的结果。但是,当数据大小增加时(df中大约有2000万行),此功能将永远占用。

这就是为什么我尝试使用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))))

但是,这同样需要永远的运行。

对于如何使此过程更快,您有任何建议吗? (也可以选择不对每个键单独进行分块和处理数据,最后将所有内容保存在大数据框中,但是也许你们有更好的选择?)

谢谢。

0 个答案:

没有答案