9

私が Dask Dataframes で抱えている問題はほとんどありません。

2列のデータフレームがあるとしましょう['a','b']

新しい列が必要な場合c = a + b

パンダで私はするだろう:

df['c'] = df['a'] + df['b']

ダスクでは、次のように同じ操作を行っています。

df = df.assign(c=(df.a + df.b).compute())

パンダで行うのと同じように、この操作をより良い方法で書くことは可能ですか?

2 番目の質問は、私をさらに悩ませているものです。

パンダ'a'で行 2 & 6の値を に変更したい場合np.piは、次のようにします。

df.loc[[2,6],'a']  = np.pi

Daskで同様の操作を行う方法を理解できませんでした。私のロジックはいくつかの行を選択し、それらの行の値のみを変更したいと考えています。

4

1 に答える 1

8

編集 新しい列を追加

setitem 構文が dask.dataframe で機能するようになりました

df['z'] = df.x + df.y

古い答え: 新しい列を追加する

setitem 構文が で機能しないことは正しいですdask.dataframe

df['c'] = ... # mutation not supported

あなたが提案するように、代わりに使用する必要があります.assign(...)

df = df.assign(c=df.a + df.b)

あなたの例では、への不要な呼び出しがあり.compute()ます。通常、最終結果が得られたら、最後にのみコンピューティングを呼び出します。

行を変更する

以前と同様に、dask.dataframe行の変更はサポートされていません。インプレース操作は、並列コードで推論するのが困難です。現時点でdask.dataframeは、この場合の適切な代替操作はありません。このトピックに関する会話のためにissue #653を提起しました。

于 2015-09-02T21:22:24.217 に答える