You need to enable JavaScript to run this app. 如何参照另一列姓名数据填充Gender列中的NaN缺失值
优惠活动
大模型
产品
解决方案
定价
更多

如何参照另一列姓名数据填充Gender列中的NaN缺失值

解决方案

普通Python的If-Else语句不能直接作用于pandas的Series整列数据,所以你之前的尝试会报错,用pandas向量化操作即可实现需求,以下是两种常用实现方式:

方式1:结合fillna + np.where实现(运行效率最高)

先确认你df中存储人员姓名的列名,替换代码中的姓名列字段即可:

import numpy as np

boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor', ...]
# 仅填充Gender列的空值,不会覆盖原有已经存在的性别数据
df['Gender'] = df['Gender'].fillna(
    np.where(df['姓名列'].isin(boys_names), 'M', 'F')
)

方式2:用loc筛选空值行单独处理(逻辑更清晰,无需额外引入numpy)

# 筛选出Gender列为空的行掩码
gender_null_mask = df['Gender'].isna()
# 对空值行单独匹配姓名规则赋值
df.loc[gender_null_mask, 'Gender'] = df.loc[gender_null_mask, '姓名列'].apply(
    lambda x: 'M' if x in boys_names else 'F'
)

匹配优化建议

如果姓名存在大小写不统一、首尾有多余空格的情况,可以先做标准化再匹配,避免匹配遗漏:

# 先清洗男性姓名列表
clean_boys = [name.strip().lower() for name in boys_names]
# 清洗df中的姓名字段后再匹配
df['Gender'] = df['Gender'].fillna(
    np.where(df['姓名列'].str.strip().str.lower().isin(clean_boys), 'M', 'F')
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:36:06