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

如何匹配不同DataFrame的姓名并替换df1的职业列值?

解决方案

步骤1:从df2中提取需要更新的姓名列表

df2的Name-empid列是姓名与员工ID的组合,首先要拆分出纯姓名部分,得到需要匹配的姓名集合:

# 拆分Name-empid列,提取姓名部分
target_names = df2['Name-empid'].str.split('-', n=1).str[0].tolist()

如果姓名中可能包含连字符(本例无此情况),用正则提取更稳妥:

target_names = df2['Name-empid'].str.extract(r'^([^-]+)')[0].tolist()

步骤2:在df1中匹配姓名并替换职业

用isin()方法定位df1中姓名在目标列表里的行,直接修改profession列的值:

# 匹配目标姓名,替换对应的profession
df1.loc[df1['Name'].isin(target_names), 'profession'] = 'data scientist'

处理后的df1结果

执行后df1数据如下:

Nameprofession
srinusenior engineer
Azaharengineer
vijayadata scientist
rahuldata scientist
swapnamanager
krishnadata scientist
ramadata scientist

关于map/replace报错的原因

你之前用map或replace出错,核心原因是没先处理df2的Name-empid列——直接用带员工ID的字符串去和df1的纯姓名匹配,格式不对应,导致映射或替换逻辑无法生效。先提取纯姓名再匹配,就能避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:35:13