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

Pandas如何用另一DataFrame的更新值替换目标DataFrame的对应值

实现方法

这里提供两种简洁的实现方案:

方案1:使用DataFrame.update(首选方案)

update是pandas专门设计用来做数据覆盖更新的接口,完全匹配你的需求:

import pandas as pd

# 示例数据构造
df1 = pd.DataFrame({
    'Identity': [3, 4, 5, 6, 7, 8, 9],
    'Value': [1, 2, 3, 4, 5, 6, 7],
    'Notes': ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
    })
df2 = pd.DataFrame({
    'Identity': [4, 8],
    'Value': [0, 128],
    })

# 以Identity为公共匹配键设置索引
df1 = df1.set_index('Identity')
df2 = df2.set_index('Identity')

# 用df2的数值覆盖df1的匹配行,未匹配行不改动
df1.update(df2)

# 恢复Identity为普通列
df1 = df1.reset_index()

执行后输出的df1与你需要的结果完全一致:

Identity  Value Notes
0         3      1     a
1         4      0     b
2         5      3     c
3         6      4     d
4         7      5     e
5         8    128     f
6         9      7     g

方案2:使用映射赋值(无需修改原表索引)

如果不想改动df1的原有索引,可以用字典映射的方式实现:

# 构造Identity到Value的映射字典
update_map = df2.set_index('Identity')['Value'].to_dict()
# 仅替换存在匹配的行的Value值
df1.loc[df1['Identity'].isin(update_map), 'Value'] = df1['Identity'].map(update_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:57:03