我遇到了一个有趣的问题,我希望有人能够向我解释。我运行下面的代码,方法一失败,而方法二运行完美。任何人都知道为什么?谢谢!
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
mask1 = df.x.notnull()
mask2 = df.z=='Boy'
mask1 & mask2
#Works
答案 0 :(得分:2)
它与运算符优先级有关。这将有效:
df.x.notnull() & (df.z == 'Boy')
但是您的原始代码被解释为:
(df.x.notnull() & df.z) == 'Boy'