如何用Python实现:以15-45岁年龄组均值填充Age列缺失值
用15-45岁年龄组的均值填充Age列缺失值的正确实现
嘿,我来帮你搞定这个问题!你遇到的TypeError是因为布尔运算符的优先级坑了你——&(按位与)的优先级比>/<这类比较运算符更高,所以你的代码里train['Age'] > 15 & train['Age'] < 45会被Python先执行15 & train['Age'],这就导致了float类型数组和bool类型标量的无效比较,直接触发报错。
正确实现步骤
- 给每个比较条件单独加括号,准确筛选出15至45岁的有效年龄数据
- 计算该子集的Age均值
- 用这个均值填充Age列的所有缺失值
完整代码
# 筛选15到45岁的有效年龄,计算该组均值 age_group_mean = train.loc[(train['Age'] >= 15) & (train['Age'] <= 45), 'Age'].mean() # 用计算得到的均值填充Age列的缺失值 train['Age'] = train['Age'].fillna(age_group_mean)
验证结果
你可以运行下面的代码确认缺失值已被完全填充:
print(train['Age'].isnull().value_counts())
正常输出应该是False 891(714条非缺失数据+177条缺失数据的总和),说明所有缺失值都处理完毕。
如果你的需求是严格不包含边界(即15<Age<45),只需把筛选条件改成(train['Age'] > 15) & (train['Age'] < 45)即可,按需调整就行。
内容的提问来源于stack exchange,提问作者Vin Bolisetti
相关产品推荐
相关产品推荐

