2016-09-27 57 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而無法工作,所以我正在尋找解決方法 –