如何比较两个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
逻辑拆解
- 第一步先把
df1的VALUES列作为键,对应的ID作为值,生成一个字典——这相当于提前建立好所有匹配规则。 - 第二步用
map方法把df2的VALUES列每个值,换成字典里对应的ID值,自动完成所有匹配替换。
内容的提问来源于stack exchange,提问作者feg4444
相关产品推荐
相关产品推荐

