我想弄清楚如何并行化(如果可能的话)pandas .groupby()。agg()进程。以下是一个示例设置:
我有一个巨大的(100+ GB)infile.csv文件格式为:
| A | B | C | D | E |
|---|---|---|---|---|
| X | M | 1 | 4 | a |
| X | M | 2 | 3 | b |
| Y | M | 3 | 2 | c |
| Y | N | 4 | 1 | d |
然后我用大块的大熊猫阅读它:
for rows in pd.read_csv(infile.csv, header = 0, index_col=False, chunksize = 6000000)
使用以下内容进行分组聚合:
df=rows.groupby(['A','B'], as_index=False).agg(['C':'sum','D':'max','E':count])
输出(我附加到另一个csv文件)是:
| A | B | C | D | E |
| | |sum|max|count|
|---|---|---|---|-----|
| X | M | 3 | 4 | 2 |
| Y | M | 3 | 2 | 1 |
| Y | N | 4 | 1 | 1 |
问题是这个过程消耗了我的RAM的20%和处理器的1个核心。我相信它可以在桌面上并行化(并因此加速)至少3次,在服务器上更多。有关如何做到这一点的任何建议吗?
如果已经回答这个问题,我很抱歉,但我找不到解决办法。