如何用Python在指定列中将特定范围数值替换为np.nan?
在Pandas中替换指定列内符合条件的数值为NaN
核心解决方案
可以通过布尔索引结合df.loc或mask方法精准定位指定列中符合条件的数值,将其替换为np.nan。以下是针对需求的实现代码:
import pandas as pd import numpy as np # 创建输入数据框 df = pd.DataFrame({ 'A': [2, 2, 5], 'B': [3, 8, 3], 'C': [5, 9, 6], 'D': [7, 7, 7] }) # 选定B、C列,将<=5或>=7的数值替换为np.nan df.loc[:, ['B', 'C']] = df.loc[:, ['B', 'C']].mask( (df.loc[:, ['B', 'C']] <= 5) | (df.loc[:, ['B', 'C']] >= 7), np.nan ) print(df)
代码解释
df.loc[:, ['B', 'C']]:定位数据框中所有行的B、C两列.mask(条件, 替换值):mask方法会将满足条件的元素替换为指定值,这里的条件是(数值<=5) | (数值>=7)(|表示逻辑或)- 最终仅保留B、C列中大于5且小于7的数值,其余替换为
np.nan
输入输出示例
输入数据框:
| A | B | C | D |
|---|---|---|---|
| 2 | 3 | 5 | 7 |
| 2 | 8 | 9 | 7 |
| 5 | 3 | 6 | 7 |
处理后的数据框:
| A | B | C | D |
|---|---|---|---|
| 2 | NaN | 5 | 7 |
| 2 | NaN | NaN | 7 |
| 5 | NaN | 6 | 7 |
内容的提问来源于stack exchange,提问作者Hal
相关产品推荐
相关产品推荐

