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

基于匹配值连接两个DataFrame:交易数据关联姓名需求

解决方案:关联交易数据与ID-姓名映射表

这需求太常见啦,用Pandas分分钟搞定,我给你两种方法,一种是稳妥易理解的merge关联法,另一种是更高效的字典映射法,你可以根据自己的数据规模选:

方法一:使用Pandas Merge(稳妥易理解)

先模拟一下你的数据(方便你直接跑代码测试):

import pandas as pd

# 模拟交易主数据
df = pd.DataFrame({
    'First ID': [854, 321],
    'Second ID': [938, 438],
    'Total': [50, 30],
    'Currency': ['GBP', 'EUR']
})

# 模拟ID-姓名映射表
ID_df = pd.DataFrame({
    'ID code': [321, 854, 938, 438],
    'Name': ['John', 'Steve', 'Mike', 'Alice']
})

接下来分两次关联,先把First ID对应的姓名加上,再关联Second ID的姓名,最后调整列顺序:

# 第一步:关联First ID对应的姓名
df_with_first = pd.merge(
    df,
    ID_df,
    left_on='First ID',
    right_on='ID code',
    how='left'  # 用left确保原交易数据全保留,未匹配的ID会显示NaN
).rename(columns={'Name': 'First name'}).drop('ID code', axis=1)

# 第二步:关联Second ID对应的姓名
final_df = pd.merge(
    df_with_first,
    ID_df,
    left_on='Second ID',
    right_on='ID code',
    how='left'
).rename(columns={'Name': 'Second name'}).drop('ID code', axis=1)

# 调整列顺序到你想要的结构
final_df = final_df[['First ID', 'First name', 'Second ID', 'Second name', 'Total', 'Currency']]

运行后得到的final_df就是你要的结果:

First ID First name  Second ID Second name  Total Currency
0       854       Steve        938        Mike     50      GBP
1       321        John        438       Alice     30      EUR

注意点:

  • how='left'是关键:保证原交易数据的所有行都不会丢失,如果某个ID在映射表里找不到,对应姓名会显示NaN;如果你的数据能保证所有ID都有匹配,也可以用how='inner'。
  • 每次关联后要删除多余的ID code列,并重命名Name列,避免列名冲突。

方法二:使用字典映射(高效适合大数据集)

如果你的交易数据量很大,merge可能有点慢,这时候用字典映射会更高效:

# 把ID_df转换成ID:姓名的字典
id_name_dict = ID_df.set_index('ID code')['Name'].to_dict()

# 直接用map方法批量映射姓名
df['First name'] = df['First ID'].map(id_name_dict)
df['Second name'] = df['Second ID'].map(id_name_dict)

# 调整列顺序
final_df = df[['First ID', 'First name', 'Second ID', 'Second name', 'Total', 'Currency']]

这个方法和merge的结果完全一样,但速度快很多,尤其是当数据行数超过10万的时候,差距会很明显。

额外提醒:

如果你的ID_df里有重复的ID,建议先去重:

ID_df = ID_df.drop_duplicates(subset='ID code', keep='first')

这样能避免映射时出现重复行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:52:56