2017-05-05 39 views
0

我遇到了一個有趣的問題,我希望有人能夠向我解釋。我運行下面的代碼,方法一失敗,而方法二完美運行。任何人有一個想法爲什麼?謝謝!Python3:創建兩個面具與一個在線面具 - >不同的結果?

方法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

Thanks @MaxU ...感謝您的回覆。 –

回答

2

它與運算符優先級的事情。這將工作:

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

但是你的原代碼解釋爲:

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

感謝您的回覆。這是有道理的,並提醒我重新閱讀Python的操作順序的重要性。 –

相關問題