2016-08-11 25 views
1

我正在嘗試使用Dask來處理大文件(50 GB)。通常,我會將它加載到內存中並使用Pandas。我想分兩列「A」和「B」,每當列「C」以一個值開始時,我想在該列中爲該特定組重複該值。Dask中的基本groupby操作

在熊貓,我會做到以下幾點:

df['C'] = df.groupby(['A','B'])['C'].fillna(method = 'ffill') 

什麼將是DASK等價? 另外,我有點失去了作爲爲大熊貓而不是如何構建在DASK問題,

謝謝你,

我迄今取得的進展:

第一組指標:

df1 = df.set_index(['A','B']) 

然後GROUPBY:

df1.groupby(['A','B']).apply(lambda x: x.fillna(method='ffill').compute() 

回答

1

看來DASK目前不執行方法的GroupBy對象。我前段時間嘗試過PR,很快就放棄了。

此外,dask不支持method參數(因爲使用延遲算法實現並不總是微不足道的)。

的規避這可能是使用fillna分組,像這樣前:

df['C'] = df.fillna(0).groupby(['A','B'])['C']

雖然這並沒有進行測試。

你可以找到我的(失敗)的嘗試在這裏:https://github.com/nirizr/dask/tree/groupy_fillna

+0

謝謝Nirlzr。我想填充NAN主題的每個組中的值,這通常在組之間有所不同。儘管他們處於不同的羣體中,您的解決方案是否爲所有的NAN提供了相同的價值? – dleal

+0

是的,不幸的是你是正確的。如果這是你的目標 - 將會類似於'df ['C'] = df ['C']。fillna(c_fill)'工作嗎? – NirIzr

+0

請注意,在我的小例子中:http://stackoverflow.com/questions/39048181/groupby-of-splitted-data-pandas如果我讀取A作爲dask數據幀,以下命令工作:A.groupby('ID' )['value']。apply(lambda x:x.fillna(method ='ffill'))然而,在我感興趣的大數據集中,我得到以下錯誤:ValueError:無法將字符串轉換爲float:T – dleal