我具有以下表格结构作为熊猫数据框(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))))
但是,这同样需要永远的运行。
对于如何使此过程更快,您有任何建议吗? (也可以选择不对每个键单独进行分块和处理数据,最后将所有内容保存在大数据框中,但是也许你们有更好的选择?)
谢谢。