を使用するapply
またはmap
メソッドを使用して、DataFrameまたはSeriesの更新されたビューを返す代わりに、関数で渡された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])
私は、この動作がDaskをusins複製できるようにしたいのですが、これまでのところ、私の唯一の運がmap_partitions
方法や回避策のビットとされています。 Daskは並列処理に複数のメモリ空間を使用していますが、私の例ではこれを使用するだけなので、データが存在するメモリ空間には問題がありますか?または、パンダまたはDask apply
メソッドが入力DataFrame/Seriesのような形状でないものを返すように強制する方法がありますか?
実際の目標は何ですか? daskタスクをグローバルな状態に変更することが可能かどうか尋ねていますか?あなたはカスタム集計を達成しようとしていますか? – MRocklin
@MRocklin絶対にカスタムアグリゲーション。必要に応じて最小限の例を追加することができますが、これはより良い入力問題かもしれないと考えました。基本的に私は非常に大きなcsvを持っています。そのCSVには、異なる長さの配列を含む列があります。私は各配列を読み込み、各要素の別の配列を参照する必要があります。この最後の配列を使用して、約2000個の要素を持つ配列を更新します。私が言ったように、map_partitionsを使って作業することができますが、将来の参照のために、適用作業を取得できるかどうかを実際に知りたいと思うでしょう。 – Grr