如何在dask

时间:2018-02-16 17:52:56

标签: python pandas dataframe distributed dask

在我的应用程序中,我使用groupby对dask数据帧执行聚合,按特定id排序​​。

但是我希望聚合维护分区划分,因为我打算与其他数据帧进行相同分区的连接。

import pandas as pd
import numpy as np
import dask.dataframe as dd

df =pd.DataFrame(np.arange(16), columns=['my_data'])
df.index.name = 'my_id'

ddf = dd.from_pandas(df, npartitions=4)
ddf.npartitions
# 4

ddf.divisions
# (0, 4, 8, 12, 15)

aggregated = ddf.groupby('my_id').agg({'my_data': 'count'})
aggregated.divisions
# (None, None)

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

您可能无法维护相同的分区,因为dask需要在分区之间聚合计数。您的数据必须以依赖于数据值的方式移动。

如果您希望确保输出包含多个分区,则可以选择使用split_out=关键字agg