You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:44:56