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

按姓名分组填充DataFrame列中的缺失值(NaN)

按姓名分组填充个人数据列的NaN值

完全可以实现,核心逻辑是按姓名字段分组,用每个分组内的有效非空值统一填充该组对应个人数据列的所有NaN。

具体实现代码

假设你的DataFrame名为df,姓名列是姓名,需要填充的个人数据列是性别、偏好起跳腿:

# 方案1:用分组内第一个非空值填充(优先推荐)
df[['性别', '偏好起跳腿']] = df.groupby('姓名')[['性别', '偏好起跳腿']].transform(
    lambda x: x.fillna(x.dropna().iloc[0]) if not x.dropna().empty else x
)

# 方案2:前向填充+后向填充,确保分组内所有NaN被覆盖
df[['性别', '偏好起跳腿']] = df.groupby('姓名')[['性别', '偏好起跳腿']].apply(
    lambda x: x.ffill().bfill()
)

关键注意点

  • 必须保证每个姓名分组内,对应个人数据列至少存在一个非空值,否则填充后仍为NaN
  • 提前校验分组内数据一致性:比如用df.groupby('姓名')['性别'].nunique()检查,如果返回值大于1,说明该分组内性别字段存在矛盾值,需要先清理数据再填充

内容的提问来源于stack exchange,提问作者E Jager de

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:45:59