如何基于其他列条件替换DataFrame中的空值:用对应教育水平平均收入填充
用对应教育水平的平均收入填充Income缺失值
你已经算出了各教育水平的平均收入,有两种简单的方法可以完成缺失值替换:
方法一:用预先计算好的均值映射填充
直接利用你得到的income_edu_based,通过map匹配教育水平对应的均值,再用fillna替换空值:
df['Income'] = df['Income'].fillna(df['Education'].map(income_edu_based))
原理:df['Education'].map(income_edu_based)会为每一行生成对应教育水平的平均收入,fillna会用这个值替换该行Income的缺失值。
方法二:一步到位计算并填充(无需提前算均值)
如果不需要保留预先计算的均值,也可以直接用groupby.transform完成分组计算和填充:
df['Income'] = df.groupby('Education')['Income'].transform(lambda x: x.fillna(x.mean().round(2)))
这个方法会自动按教育水平分组,计算每组的平均收入(保留两位小数),并填充到组内的缺失值上。
验证填充效果
执行完填充后,可以用下面的代码确认Income列是否还有缺失值:
print(df['Income'].isna().sum())
内容的提问来源于stack exchange,提问作者Johnny Dalal
相关产品推荐
相关产品推荐

