按姓名分组填充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
相关产品推荐
相关产品推荐

