我正在尝试使用Dask来处理大文件(50 gb)。通常,我会将其加载到内存中并使用Pandas。我想分组两列" A"和" B",每当列" C"以值开头,我想在该列中为该特定组重复该值。
在熊猫中,我会做以下事情:
df['C'] = df.groupby(['A','B'])['C'].fillna(method = 'ffill')
Dask中的等价物是什么? 另外,关于如何在Dask中构造问题而不是在Pandas中,我有点迷失,
谢谢,
到目前为止我的进展:
首先设定索引:
df1 = df.set_index(['A','B'])
然后分组:
df1.groupby(['A','B']).apply(lambda x: x.fillna(method='ffill').compute()
答案 0 :(得分:1)
看来dask当前没有为fillna
对象实现GroupBy
方法。我前段时间尝试过PRing并且很快放弃了。
此外,dask不支持method
参数(因为使用延迟算法实现并不总是微不足道)。
解决方法可能是在分组之前使用fillna
,如下所示:
df['C'] = df.fillna(0).groupby(['A','B'])['C']
虽然没有经过测试。
您可以在此处找到我的(失败)尝试:https://github.com/nirizr/dask/tree/groupy_fillna