Python3:创建两个掩码与一个内联掩码 - >结果不同?

时间:2017-05-05 15:30:32

标签: python pandas

我遇到了一个有趣的问题,我希望有人能够向我解释。我运行下面的代码,方法一失败,而方法二运行完美。任何人都知道为什么?谢谢!

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

1 个答案:

答案 0 :(得分:2)

它与运算符优先级有关。这将有效:

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

但是您的原始代码被解释为:

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