【问题标题】:Python3: Creating two Masks vs. One In-line mask -> Different Results?Python3:创建两个掩码与一个内联掩码 -> 不同的结果?
【发布时间】:2017-05-05 23:38:05
【问题描述】:

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

方法一

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

【问题讨论】:

标签: python pandas


【解决方案1】:

它与运算符优先级有关。这将起作用:

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

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

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

【讨论】:

  • 感谢您的回复。这是有道理的,并提醒我再次阅读 Python 操作顺序的重要性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
相关资源
最近更新 更多