2017-05-05 3 views
0

私は興味深い問題に遭遇し、誰かがそれを私に説明できるようになることを願っています。私は以下のコードを実行し、方法1は失敗し、方法2は完全に実行されます。誰でも理由が分かりますか?ありがとう!Python3:2つのマスク対1つのインラインマスクの作成 - >異なる結果?

方法1

import pandas as pd 
df=pd.DataFrame({'x' : [1, 2, 3, 'NaN' ], 'y' : [4, 'NaN', 5, 6], 'z' : ["Boy", "Boy", "Girl", "Boy"]}) 
df.x.notnull() & df.z=='Boy' 
#Throws Error 

方法2

mask1 = df.x.notnull() 
mask2 = df.z=='Boy' 
mask1 & mask2 
#Works 
+2

あなたは[いくつかの例で、この答え]をチェックすることもできます(http://stackoverflow.com/a/40578010/ 5741205) – MaxU

+0

ありがとう@MaxU ...あなたの返事を感謝します。 –

答えて

2

これは、演算子の優先順位に関係しています。これは動作します:あなたの元のコードは次のように解釈されたが

df.x.notnull() & (df.z == 'Boy') 

(df.x.notnull() & df.z) == 'Boy' 
+1

返信いただきありがとうございます。これは理にかなっており、Pythonの操作の順序をもう一度読むことの重要性を思い出させます。 –

関連する問題