2017-07-19 11 views
1

_typeという列とavg_engaged_timeという列が含まれているdfというパンダのデータフレームがあります。 _type0で、avg_engaged_timeが5番目と95番目のパーセンタイルの間にある行を見たいと思います。ここに私の試みはこれまでのところです:_typeに基づいてパンダ:シリーズの真実値はあいまいです

まずIフィルタ:

original = result_df[result_df['_type'] == 0.0] 

それから私は、パーセンタイルを見つける:

low_original = original['_avg_engaged_time'].quantile(0.05) 
high_original = original['_avg_engaged_time'].quantile(0.95) 

は、それから私は、これらのパーセンタイルに基づいてフィルタリングしてみてください:

original[original['_avg_engaged_time'] > low_original and original['_avg_engaged_time'] < high_original] 

残念ながら、私はこのエラーが発生します:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 
私はちょうど95パーセンタイルより _avg_engaged_time 5パーセンタイル未満以上持つ行をフィルタリングするための基本的なブールインデックスを使用したい

...

任意のアイデアをどのように修正するには?

ありがとうございます!

答えて

4

andの代わりにビット単位の演算子&を使用する必要があります。あなたはブール値のリストの間で論理演算をしていますが、単一のものではありません。

ので

original[(original['_avg_engaged_time'] > low_original) & (original['_avg_engaged_time'] < high_original)] 

動作するはずです。

+0

私はそれをして 'TypeError:dtyped [float64]配列と[bool]型のスカラーを比較できません。 – bclayman

+0

おそらく私の側からの間違った括弧でしょう。再試行する – 5agado

関連する問題