如何用Pandas和Numpy按条件修改DataFrame的medianIncome列值
DataFrame列值截断实现方案
针对你需要将medianIncome列中≤0.4999的值替换为0.4999、≥15.0001的值替换为15.0001的需求,这里提供两种符合要求(仅用Pandas和Numpy,无lambda)的实现方案:
方法一:嵌套使用np.where
你已经写出了部分np.where代码,这里补全完整逻辑:
import numpy as np import pandas as pd # 先处理上限,再处理下限 housing['medianIncome'] = np.where( housing['medianIncome'] >= 15.0001, 15.0001, np.where( housing['medianIncome'] <= 0.4999, 0.4999, housing['medianIncome'] ) )
逻辑说明:
- 第一层判断:如果值≥15.0001,替换为15.0001
- 第二层判断:如果不满足第一层,再检查是否≤0.4999,是则替换为0.4999
- 都不满足的话,保留原数值
方法二:使用Pandas的clip方法(更简洁高效)
Pandas的clip方法专门用于对列值进行上下限截断,完全匹配你的需求:
housing['medianIncome'] = housing['medianIncome'].clip(lower=0.4999, upper=15.0001)
逻辑说明:
lower参数设置下限:所有≤0.4999的值会被替换为0.4999upper参数设置上限:所有≥15.0001的值会被替换为15.0001- 中间范围的数值保持不变
验证示例
用你提供的样本数据测试,比如其中medianIncome为83252.0的行,处理后会被替换为15.0001;如果有值≤0.4999的行,会被替换为0.4999,其余值保持原样。
内容的提问来源于stack exchange,提问作者Kdoyle73
相关产品推荐
相关产品推荐

