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

如何比较两个DataFrame指定列的行并在相等时替换为对应值?

DataFrame列匹配替换:用另一DataFrame的相邻列值替换匹配项

需求很明确:把df1某一列的所有行和df2的某一列逐一比对,只要值相等,就用df1里匹配单元格所在行的相邻列值,替换df2对应位置的单元格值。

示例数据

import pandas as pd

df1 = pd.DataFrame({'ID': [1, 2, 3], 'VALUES': [4, 6, 7]})
df2 = pd.DataFrame({'NAME': [7, 8, 9, 10], 'VALUES': [4, 6, 6, 7]})

高效解决方案

用字典映射的方式是最简洁且性能最优的(比逐行循环快得多,适合大数据集):

# 从df1生成映射关系:VALUES值对应ID值
value_mapping = df1.set_index('VALUES')['ID'].to_dict()

# 替换df2的VALUES列
df2['VALUES'] = df2['VALUES'].map(value_mapping)

运行结果

执行后打印df2,得到期望的结果:

NAME  VALUES
0     7       1
1     8       2
2     9       2
3    10       3

逻辑拆解

  1. 第一步先把df1的VALUES列作为键,对应的ID作为值,生成一个字典——这相当于提前建立好所有匹配规则。
  2. 第二步用map方法把df2的VALUES列每个值,换成字典里对应的ID值,自动完成所有匹配替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:35:09