Pandas 多个条件下的掩码

Pandas Mask on multiple Conditions

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

此代码有效

persDf = persDf.mask(persDf < 1000)

我得到的每个值都是 nan,但这个不是:

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

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

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