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

Pandas如何基于指定列匹配两个DataFrame并更新对应列值

解决方案

这里提供两种远优于for循环的高效实现方式,均基于pandas原生向量运算,避免了Python层循环的性能开销,数据量越大性能优势越显著。

方法1:映射法(单字段更新最优)

通过将df2的D列作为索引、C列作为值构造映射关系,直接对df1的C列批量赋值:

# 构造D到对应C值的映射关系
c_map = df2.set_index('D')['C']
# 批量更新df1的C列
df1['C'] = df1['D'].map(c_map)

如果存在df1中部分D值在df2中没有匹配项、需要保留df1原有C值的场景,可增加缺省值处理:

df1['C'] = df1['D'].map(c_map).fillna(df1['C'])

方法2:关联法(适合多字段同时更新)

如果后续需要同时更新多个列,可使用左关联的方式实现:

# 先删除df1原有C列,再和df2的D、C列按D关联
df1 = df1.drop(columns=['C']).merge(df2[['D', 'C']], on='D', how='left')

两种方法执行后得到的df1都和你给出的预期结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:18:03