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

如何用其他DataFrame列按匹配条件替换Pandas DataFrame的ID列

用Pandas将ID列批量替换为对应名称

示例数据构造

先还原你提供的DataFrame:

import pandas as pd

# 构造df1
df1 = pd.DataFrame({
    'f_id': [0, 1],
    'l_id': [0, 1],
    'p_id': [1, 2],
    's_id': [1, 2]
})

# 构造df2
df2 = pd.DataFrame({
    'f_id': [0, 1],
    'f_name': ['Johen', 'Joe']
})

# 构造df3
df3 = pd.DataFrame({
    'l_id': [0, 1],
    'l_name': ['Ardi', 'Peykan']
})

替换ID为名称的实现

核心思路是把df2、df3转换成ID-名称映射字典,再用map()方法对df1的对应列做批量替换,自动适配ID顺序混乱、DataFrame长度不一致的场景:

# 生成ID到名称的映射字典
f_map = df2.set_index('f_id')['f_name'].to_dict()
l_map = df3.set_index('l_id')['l_name'].to_dict()

# 替换df1中的ID列
df1['f_id'] = df1['f_id'].map(f_map)
df1['l_id'] = df1['l_id'].map(l_map)

# 可选:如果df1存在df2/df3中没有的ID,用fillna保留原ID
# df1['f_id'] = df1['f_id'].map(f_map).fillna(df1['f_id'])

最终结果

运行后得到的df1就是目标结果:

f_id    l_id  p_id  s_id
0  Johen    Ardi     1     1
1    Joe  Peykan     2     2

补充说明

  • 不管df2/df3的ID顺序和df1是否一致,map()都会根据ID值精准匹配替换
  • 若df1中存在df2/df3未覆盖的ID,默认会转为NaN,可通过fillna保留原ID值
  • 该方法效率较高,适合处理大规模数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:09:24