【问题标题】:Pandas Mask on multiple Conditions多种情况下的熊猫面具
【发布时间】:2019-09-29 07:24:55
【问题描述】:

在我的数据框中,我想用 nan 替换低于 1 和高于 5 的每个值。

此代码有效

persDf = persDf.mask(persDf < 1000)

我将每个值都作为 nan 得到,但这个没有:

persDf = persDf.mask((persDf < 1) and (persDf > 5))

我不知道为什么会这样。我已经检查了手册页和明显相似问题的不同解决方案,但找不到解决方案。有没有人有可以帮助我的想法?

【问题讨论】:

  • |替换and
  • 一个值不能兼得?它的or,最好使用|,因此我会使用:np.where((persDf&lt; 1) | (persDf&gt; 5), np.NaN, persDf)
  • @Erfan:我想取回一个数据帧,所以我坚持使用 mask 命令。奇怪的是,使用或给了我一个异常发生:ValueError 但是|按我的意愿工作。谢谢。如果你愿意,你可以创建一个我会接受的答案。
  • 很高兴 :)

标签: python pandas nan mask


【解决方案1】:

使用| 运算符,因为值不能是&lt; 1 AND &gt; 5

persDf = persDf.mask((persDf < 1) | (persDf > 5))

另一种方法是使用np.where 并在pd.DataFrame 中调用它:

pd.DataFrame(data=np.where((df < 1) | (df > 5), np.NaN, df), 
             columns=df.columns)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2017-05-26
    • 2022-12-19
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多