2016-10-24 7 views
1

フィルタリングされたデータセットのカラムの割り当てには.locを正常に使用しましたが、今度は2つのフィルタでデータセットをフィルタリングし、次のエラーが発生する必要があります。私はフィルタリングのように&演算子を使用しようとしています。.locを使用したパンダでのマルチセレクション

TypeError: cannot compare a dtyped [object] array with a scalar of type [bool] 

コード:

import pandas as pd 
df = pd.DataFrame(data=[['Arlington', 'MA'], 
          ['Arlington', 'TX'], 
          ['Dallas', 'TX']], 
        columns=['City', 'State']) 

df.loc[(df['State'] == 'TX' & df['City'] == 'Arlington'), 'New Column'] = 10 

print df 

所望の出力:

  City State New Column 
0  Arlington MA   NAN 
1  Arlington TX   10 
2   Dallas TX   NaN 
+1

あなたは '(df ['State'] == 'TX')&(df ['City'] == 'Arlington')'として比較をかっこにする必要があります。 – BrenBarn

+0

@BrenBarn、ありがとう、ありがとう。なぜ私はベストアンサーとして受け入れることができるように答えとして投稿しないのですか? – user2242044

+0

あなたは ''フィルタリングだけの場合と同じように '& '演算子を使用していないことに注意してください。あなたは条件を使用して割り当てようとするのではなく、同じエラーを表示します。 – BrenBarn

答えて

3

あなたは(df['State'] == 'TX') & (df['City'] == 'Arlington')として比較を括弧する必要があります。 Pythonでは、&のようなビット単位の演算子は、==のような比較演算子よりも高い優先順位を持っています。

関連する問題