2016-11-16 11 views
1

複数の条件に基づいて行を選択するためのdaskで最も効果的な方法は何ですか?パンダでは、daskの複数の条件に基づく行単位の選択ですか?

df[df.A > 0 & df.B <= 10] 

のようになります。ただし、daskでは、これはエラーを返します。それは、いくつかを計算する(私は仮定)をトリガとして

df[np.logical_and(df.A > 0, df.B <= 10)] 

しかし、これは超遅いです:私は今のところ思い付いた最善の解決策は、numpysにlogical_and()機能を使用することです。複数の条件に基づいてdaskの行を選択するためのより効果的な方法はありますか?

+2

以上もパンダでは動作しません、あなたは括弧を必要とする: ''のdf [(df.A> 0)&(df.B < = 10)] '' – joris

答えて

0

は、論理的に相当し、@jorisのヒントに

+0

これは望ましい結果をもたらさないでしょう.2番目のブーリアンインデックスは、最初のブーリアンインデックスのためデータフレームが短くなります。 – joris

+0

これは再索引付けしないので、これは 'df [(df.A> 0)&(df.B <= 10)]' –

+0

と同じです。しかしパフォーマンスが良い(そしてdaskを使う場合)、再インデックス化を避けるために 'df [(df.A> 0)&(df.B <= 10)]'が必要になります。 – joris

1

おかげで、右の位置職場でカッコ

df[df.A > 0][df.B <= 10] 

を試してみてください。だから、DASK内の溶液は、パンダのソリューションと同じ/似ています

df[(df.A > 0) & (df.B <= 10)] 
関連する問題