如何用Python条件语句将非指定范围的列值替换为Null值
修正方案:将超出范围的年龄替换为Null值
你的代码问题出在赋值语句的语法错误,df[age_range = np.nan]这种写法不符合Pandas的索引赋值规则。下面是几种可行的修正方法:
方法1:使用loc索引赋值
这是最直观的方式,通过布尔索引定位需要替换的行,再指定列进行赋值:
import pandas as pd import numpy as np # 假设df是你的目标DataFrame age_out_of_range = (df['age'] < 20) | (df['age'] > 50) df.loc[age_out_of_range, 'age'] = np.nan
方法2:使用mask方法
mask会把满足条件的值替换成指定值,刚好匹配你的需求场景:
df['age'] = df['age'].mask((df['age'] < 20) | (df['age'] > 50), np.nan)
方法3:使用where方法
where和mask逻辑相反,会保留满足条件的值,将不满足的替换为指定值,因此需要把条件反过来:
df['age'] = df['age'].where((df['age'] >= 20) & (df['age'] <= 50), np.nan)
这三种方法都能实现你想要的效果,可根据个人习惯选择使用。
内容的提问来源于stack exchange,提问作者mb611
相关产品推荐
相关产品推荐

