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

Pandas条件列填充:'PERS CODE'为空时用'PERS2 CODE'映射名称

解决方案

完整修改代码

import pandas as pd

df_name = pd.DataFrame({'CODE':['01','02','03','04'],
                        'NAME':['MICK','DAVID','JEAN','CHERRY']})

df_exp = pd.DataFrame({'TEST':['POST1','POST2','POST3','POST4','POST5','POST6','POST7', 'POST8'],
                       'PERS CODE':['02','','','04','','02','','03'],
                       'PERS2 CODE':['03','01','02','01','04','02','01','05']})

# 预先生成CODE到NAME的映射字典,复用更高效
name_mapping = df_name.set_index('CODE')['NAME']

df_output = pd.DataFrame()
df_output['POST'] = df_exp['TEST']
# 优先用PERS CODE映射,空值则用PERS2 CODE映射填充
df_output['AGENT'] = df_exp['PERS CODE'].map(name_mapping).fillna(df_exp['PERS2 CODE'].map(name_mapping))

print(df_output)

关键逻辑说明

  • 先构建name_mapping字典,将df_name的CODE设为索引对应NAME值,避免重复计算。
  • 第一步用PERS CODE映射得到AGENT初始值,PERS CODE为空的行此时会得到NaN。
  • 调用fillna方法,把AGENT中的空值替换为PERS2 CODE映射后的结果,实现"优先用PERS CODE,空值则用PERS2 CODE"的需求。
  • 若PERS2 CODE的值在df_name中无匹配(比如POST8的05),对应AGENT会保留NaN,符合数据实际情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:12:21