2016-04-12 20 views
1

私はパンダのデータフレームをフィルタリングしようとしています。データのフォーマットは、間に空白があるデータブロックです。パンダの条件付き検索データフレーム

data1, data2 

val1, val2 
val1, val2 

val1, val2 

ブロックをフィルタリングしたいが、データフレーム内の空白を維持したい。それはおそらく私のsleeop-だ、

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

私は私のラインにこれ​​らのメソッドを挿入しようとしましたが、何も動いていないようにみえ:

df = df.loc[(df['data2'] >= threshold) and (df['data2'] == '')] 

が、これはエラーを返します。これを行う必要があります私のコードです

+0

'and'は、それがためbarfsので、あなたは、アレイ状の構造を比較しているスカラー値を理解していますそれが 'True'を返すべきならば、あなたは1つのマッチを持っていればあいまいですか?ビット演算子は配列全体を処理し、ブール値の配列を返します – EdChum

答えて

2

実際にandを使用すると、インタプリタは、これをサポートしない2つのタイプを使用してブール値を見つけようとしていると考えるようになります。この場合、あなたはおそらく&探している:

df['data2'] >= threshold) & (df['data2'] == '') 

例を

In [1]: import numpy as np 

In [2]: np.array([True, False]) & np.array([True, True]) 
Out[2]: array([ True, False], dtype=bool) 

In [3]: np.array([True, False]) and np.array([True, True]) 
------------------------------------------------------------------- -------- 
ValueError        Traceback (most recent  call last) 
<ipython-input-3-76eeded6cdad> in <module>() 
----> 1 np.array([True, False]) and np.array([True, True]) 

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 
+0

OKですが、&に変更するとTypeErrorが返されます:無効な型の比較 例外 – GreenGodot

+0

@GreenGodot 'df ['data2']の出力をポストできますか? > = threshold 'と 'df [' data2 '] ==' ''? –

+0

ああ、私は空の文字列が間違っていることを知りました。代わりにisnull()を呼び出すだけで問題は解決しました。 – GreenGodot