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

Pandas:按多条件匹配分组行更新性别推断列

解决方法

要生成你需要的mask3,核心是统计每个家庭中「Status为head且Gender为undetermined」的个体数量,判断是否等于1。下面是具体实现步骤:

1. 计算每个家庭的未确定性别户主数量

用groupby + transform可以直接在原DataFrame上生成对应家庭的计数,不用额外合并:

# 为每行添加对应家庭的未确定性别户主计数
df['head_undetermined_count'] = df.groupby('FamilyID').transform(
    lambda group: ((group['Status'] == 'head') & (group['Gender'] == 'undetermined')).sum()
)

2. 构建三个条件掩码

结合你已有的mask1和mask2,加上新的mask3:

# mask1:筛选属于有妻子的家庭的行
mask1 = df['FamilyID'].isin(df[df['Status'] == 'wife']['FamilyID'])
# mask2:筛选是户主且性别未确定的行
mask2 = (df['Status'] == 'head') & (df['Gender'] == 'undetermined')
# mask3:筛选对应家庭仅有一位未确定性别户主的行
mask3 = df['head_undetermined_count'] == 1

3. 生成Gender_Inferred列

只有同时满足三个条件的行,才将推断性别设为male,其余情况保留原Gender值:

# 创建推断列
df['Gender_Inferred'] = df['Gender'].where(~(mask1 & mask2 & mask3), 'male')

# 可选:清理临时生成的计数列
df.drop('head_undetermined_count', axis=1, inplace=True)

这样就能完全匹配你的需求:仅当家庭存在妻子、仅有一位未确定性别的户主时,该户主的推断性别为male,其余情况沿用原始性别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:36:24