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

Pandas异列长DataFrame匹配mrn字段填充race列缺失值方法

解决方案

核心思路是先提取mrn2与race2的唯一对应关系构建映射表,再用mrn1匹配映射表填充空值即可,完整代码如下:

import pandas as pd

# 原始DataFrame构造代码
data = {'mrn1':[1,1,1,2,2,3,3,3,4],
        'race1':['', '', '', 'white', 'white', 'black', 'black', 'black', ''],
        'mrn2':[1,1,3,3,4,6],
        'race2':['black', 'black','black','black', 'white', 'white']}
dfx = pd.DataFrame.from_dict(data, orient='index')
dfx = dfx.transpose()

# 1. 构建mrn到race的唯一映射表,排除空值行
mrn_race_map = dfx.dropna(subset=['mrn2', 'race2'])\
                  .drop_duplicates('mrn2')\
                  .set_index('mrn2')['race2']\
                  .to_dict()

# 2. 生成race3列:优先取race1非空值,空值用mrn1匹配映射表的结果填充
dfx['race3'] = dfx['race1'].replace('', pd.NA)\
                           .fillna(dfx['mrn1'].map(mrn_race_map))

# 查看输出结果
print(dfx)

逻辑说明

  1. 构建映射表时先剔除mrn2和race2的空值行,再按mrn2去重,保证每个mrn对应唯一的race值
  2. 生成race3时先把race1里的空字符串转为pandas空值,再用fillna方法匹配填充,完全符合需求规则
  3. 如果实际场景中存在单个mrn2对应多个race2的情况,可在去重步骤前增加分组聚合逻辑(比如取出现频次最高的race值)即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:45:04