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

如何用Python Pandas通过主键替换DataFrame列值

Pandas 实现DataFrame列值的批量映射替换

针对大规模数据的高效映射需求,推荐使用字典映射+map()方法,这是处理此类场景最快的方式之一,具体步骤如下:

1. 生成映射字典

先将DF2转换为以G1为键、G2为值的字典,利用Pandas的set_index()和to_dict()方法快速生成:

mapping_dict = df2.set_index('G1')['G2'].to_dict()

2. 执行列值替换

直接用map()方法将DF1的COL1列值替换为字典中对应的G2值:

df1['COL1'] = df1['COL1'].map(mapping_dict)

完整代码示例

import pandas as pd

# 模拟生成示例数据
df1 = pd.DataFrame({
    'COL1': ['A', 'B', 'A', 'C', 'D'],
    'COL2': [10, 20, 30, 40, 50],
    'COL3': ['X', 'Y', 'X', 'Z', 'W']
})

df2 = pd.DataFrame({
    'G1': ['A', 'B', 'C', 'D'],
    'G2': [1, 2, 3, 4]
})

# 生成映射字典
mapping_dict = df2.set_index('G1')['G2'].to_dict()

# 替换COL1列值
df1['COL1'] = df1['COL1'].map(mapping_dict)

# 查看结果
print(df1)

补充说明

  • 效率优势:字典的哈希查找特性让这种方法的时间复杂度为O(n)(n为DF1的行数),远快于合并(merge)类操作,适合处理百万级以上的大规模数据。
  • 异常值处理:如果DF1的COL1中存在DF2未覆盖的取值,映射后会变为NaN。若需要保留原数值,可添加fillna():
df1['COL1'] = df1['COL1'].map(mapping_dict).fillna(df1['COL1'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:25:25