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

如何基于参考DataFrame的ID自动替换主DataFrame的公司名称

基于ID匹配替换DataFrame中的Company列名称

方法一:使用merge合并匹配

适合需要保留所有原始数据的场景,通过左连接将参考表的Company名称匹配到主表:

import pandas as pd

# 构造主DataFrame
df1 = pd.DataFrame({
    'Company': ['A', 'A', 'B', 'B', 'C'],
    'ID': [1234, 1478, 5678, 3333, 2468],
    'Charge': [100, 150, 100, 200, 200]
})

# 构造参考DataFrame
df_ref = pd.DataFrame({
    'Company': ['Alpha', 'Alpha', 'Beta', 'Beta', 'Gamma'],
    'ID': [1234, 1478, 5678, 3333, 2468]
})

# 左连接匹配,保留主表所有行
merged_df = df1.merge(df_ref, on='ID', suffixes=('_old', ''))
# 移除旧的Company列,整理列顺序
final_df = merged_df.drop('Company_old', axis=1)[['Company', 'ID', 'Charge']]
print(final_df)

方法二:创建ID-Company映射字典(高效处理大数据)

如果参考表中每个ID对应唯一的Company名称,可以先构建映射字典,再用map快速替换,这种方法处理大规模数据时效率更高:

import pandas as pd

# 构造数据(同上)
df1 = pd.DataFrame({
    'Company': ['A', 'A', 'B', 'B', 'C'],
    'ID': [1234, 1478, 5678, 3333, 2468],
    'Charge': [100, 150, 100, 200, 200]
})

df_ref = pd.DataFrame({
    'Company': ['Alpha', 'Alpha', 'Beta', 'Beta', 'Gamma'],
    'ID': [1234, 1478, 5678, 3333, 2468]
})

# 构建ID到Company的映射字典(去重确保每个ID对应唯一值)
id_to_company = df_ref.drop_duplicates(subset='ID').set_index('ID')['Company'].to_dict()

# 替换主表的Company列
df1['Company'] = df1['ID'].map(id_to_company)
print(df1)

两种方法都能得到你期望的结果,其中方法二更适合处理大规模数据,因为map的时间复杂度更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:33:15