在我的数据框中,我要用nan替换每个小于1且大于5的值。
此代码有效
persDf = persDf.mask(persDf < 1000)
我得到每一个值都是nan,但是这个值没有:
persDf = persDf.mask((persDf < 1) and (persDf > 5))
我不知道为什么会这样。我已经检查了手册页以及关于显然相似的问题的不同解决方案,但是找不到解决方案。有人有什么想法可以帮助我吗?
答案 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)