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

基于食物类型映射字典填充DataFrame的age列空值

解决方法

核心思路

你需要根据food列的取值,匹配映射字典里的年龄中位数来填充age的空值,replace没法直接实现这种关联映射,用map结合赋值/fillna才是正确的路子。

代码实现

假设你的原DataFrame名为df,年龄中位数映射字典名为food_age_median:

方式一:直接在原DataFrame上填充(高效简洁)

# 用food列匹配字典值,直接填充age的NaN
df['age'] = df['age'].fillna(df['food'].map(food_age_median))

方式二:先处理子集再更新原表

如果坚持要先筛选出age为空的子集再操作:

# 筛选age为NaN的子集(加copy避免链式索引警告)
na_age_subset = df[df['age'].isna()].copy()
# 根据food列映射字典,生成填充后的age值
na_age_subset['age'] = na_age_subset['food'].map(food_age_median)
# 将填充好的结果更新回原DataFrame的对应行
df.loc[na_age_subset.index, 'age'] = na_age_subset['age']

为什么replace不行?

replace是对指定值做静态替换,比如把所有NaN换成某个固定值,但你需要的是根据另一列的动态取值来替换,所以它满足不了这种关联映射的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:00:34