2017-03-31 51 views
1

在大熊貓可以使用applymap方法的方式,代替了返回數據幀的更新視圖或一系列的更新與傳遞給函數在numpy的陣列。例如:Dask;使用適用於更新可變

In[1]: df = pd.DataFrame({'x': [1,2,3,4,5]}) 
In[2]: count = np.array([0]) 
In[3]: def increment(row, count): 
      count[0] += row 
In[4]: df.x.map(lambda row: increment(row, count)) 
Out[4]: 
    x 
0 None 
1 None 
2 None 
3 None 
4 None 
Name: x, dtype: object 
In[5]: count 
Out[5]: array([15]) 

我希望能夠複製這種行爲usins Dask,但到目前爲止,我只能碰運氣一直與map_partitions方法和一點的一種解決方法。這是數據所在的內存空間的問題,因爲我的示例只使用了一個,而Dask將使用多個內存空間進行並行處理?或者是否有辦法強制熊貓或Dask方法返回一些形狀不像輸入DataFrame/Series的東西?

+0

什麼是您的實際目標是什麼?你問是否有可能讓沙塵暴任務突變爲全局狀態?你想完成自定義聚合嗎? – MRocklin

+0

@MRocklin絕對是一個自定義聚合。如有必要,我可以添加一個簡單的例子,但認爲這可能是一個更好的入門問題。基本上我有一個非常大的csv。該csv有一個包含不同長度數組的列。我需要讀取每個數組併爲每個元素查找另一個數組。然後使用這個最終數組來更新其中包含大約2000個元素的計數數組。就像我說過的,我可以使用map_partitions工作,但是真的想知道我們是否可以申請工作,以備將來參考。 – Grr

回答

0

一般來說取決於變異全局狀態的任務不中DASK支持。

如果你的目標是一個自定義的聚集,則.reduction方法可能是使用的。如果可以將縮減寫爲應用於每個分區的函數,然後再進行後續組合操作,則此方法運行良好。

如果你的目標是比這個話,我建議切換到dask.delayed更多的自定義(見these docs)。

相關問題