多种条件下的熊猫面具

时间:2019-05-11 19:31:37

标签: python pandas nan mask

在我的数据框中,我要用nan替换每个小于1且大于5的值。

此代码有效

persDf = persDf.mask(persDf < 1000)

我得到每一个值都是nan,但是这个值没有:

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

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

1 个答案:

答案 0 :(得分:1)

使用|运算符,因为值不能为< 1> 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)