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

如何基于匹配列从另一DataFrame更新pandas DataFrame指定列值?

解决Pandas中通过匹配另一DataFrame列更新指定列的问题

核心需求

将df1的b1列与df2的b2列匹配,匹配成功时用df2的a2值替换df1的b1值,未匹配的b1值保持不变。

实现步骤

  1. 构建映射字典:从df2中提取b2(匹配键)到a2(替换值)的对应关系
  2. 执行列更新:利用Pandas的replace方法完成批量替换

完整代码示例

import pandas as pd

# 创建示例df1
df1 = pd.DataFrame({
    'idx': [12,13,14,15],
    'a1': [4,5,6,7],
    'b1': ['x10','x2','x4','x13'],
    'c1': [1,3,4,7],
    'd1': [2,5,5,9],
    'e1': [5,4,6,2]
}).set_index('idx')

# 创建示例df2
df2 = pd.DataFrame({
    'idx': [1,2,3,4],
    'a2': ['x2','x8','x6','x4'],
    'b2': ['x1','x2','x4','x7'],
    'c2': [2,5,6,6],
    'd2': [2,7,9,8],
    'e2': [4,8,5,9]
}).set_index('idx')

# 构建b2到a2的映射字典
b2_to_a2 = df2.set_index('b2')['a2'].to_dict()

# 更新df1的b1列
df1['b1'] = df1['b1'].replace(b2_to_a2)

# 输出结果
print(df1)

输出结果

a1    b1  c1  d1  e1
idx                      
12    4  x10   1   2   5
13    5   x8   3   5   4
14    6   x6   4   5   6
15    7  x13   7   9   2

代码解释

  • 映射字典构建:df2.set_index('b2')['a2'].to_dict()将df2的b2列设为索引,提取a2列转为字典,确保每个b2值对应唯一的a2替换值。
  • 列更新:df1['b1'].replace(b2_to_a2)会遍历b1列的每个值,若该值存在于映射字典的键中,则替换为对应的a2值;不存在则保留原始值,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:43:25