2016-09-27 101 views
2

是否有可能遍历dask GroupBy对象以访问基础数据框?我想:遍历dask中的GroupBy对象

import dask.dataframe as dd 
import pandas as pd 
pdf = pd.DataFrame({'A':[1,2,3,4,5], 'B':['1','1','a','a','a']}) 
ddf = dd.from_pandas(pdf, npartitions = 3) 
groups = ddf.groupby('B') 
for name, df in groups: 
    print(name) 

然而,这将导致一个错误:KeyError: 'Column not found: 0'

更广泛地说,什么样的互动也将DASK的GroupBy对象允许,除了从适用的方法?

+0

我很高兴地发现get_group()方法已经实现。 –

+0

你的代码适合我, –

+0

@StevenG感谢您的反馈。也许有一个问题,我的设置 –

回答

2

你可以迭代通过dask这样做,也许有更好的办法,但这对我有用。

import dask.dataframe as dd 
import pandas as pd 
pdf = pd.DataFrame({'A':[1, 2, 3, 4, 5], 'B':['1','1','a','a','a']}) 
ddf = dd.from_pandas(pdf, npartitions = 3) 
groups = ddf.groupby('B') 

for group in pdf['B'].unique(): 
    print groups.get_group(group) 

将返回

dd.DataFrame<dataframe-groupby-get_group-e3ebb5d5a6a8001da9bb7653fface4c1, divisions=(0, 2, 4, 4)> 
dd.DataFrame<dataframe-groupby-get_group-022502413b236592cf7d54b2dccf10a9, divisions=(0, 2, 4, 4)> 
2

一般遍历Dask.dataframe对象不推荐使用。这是低效的。相反,你可能想尝试构造一个函数,并将该函数映射到结果组上使用groupby.apply

+0

Groupby.apply由于https://github.com/dask/dask/issues/1587而无法工作,所以我正在寻找解决方法 –