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

如何基于双列分组均值填充DataFrame中Age列的缺失值

实现方法

你写的框架代码出错是因为 map() 是 Pandas Series 独有的方法,直接对双列组成的 DataFrame 调用 map() 会报错,下面提供两种可行的实现方案:

方案1:基于map的实现(匹配你原来的思路)

你只需要把双列按行拼接为元组,变成单列Series后就可以调用map匹配分组均值:

# 先存储双列分组的Age均值
grouped_age_mean = df.groupby(["col_X","col_Y"])["Age"].mean()
# 空值填充
df.loc[df['Age'].isnull(),'Age'] = df[['col_X',"col_Y"]].apply(tuple, axis=1).map(grouped_age_mean)

这里的分组均值grouped_age_mean本身是MultiIndex结构的Series,刚好可以和两列组成的元组key一一对应,完成映射填充。

方案2:更简洁的transform实现

用transform可以直接把分组均值广播到每个对应分组的行上,配合fillna直接完成填充,代码更精简:

df['Age'] = df['Age'].fillna(df.groupby(["col_X","col_Y"])["Age"].transform('mean'))

这个方法不需要单独筛选空值行,fillna会自动只替换空值位置,执行效率也更高。

内容的提问来源于stack exchange,提问作者Keperoze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:05