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

如何基于姓名顺序不同的列合并两个Pandas DataFrame?

解决两表姓名顺序相反的合并问题

核心思路是生成统一格式的匹配键:将姓名拆分为独立部分后按字母排序,再拼接成固定格式的字符串,这样不管原姓名是名在前还是姓在前,对应人员的匹配键都会一致。

具体实现步骤

  • 编写一个处理姓名的函数,将姓名拆分为单词列表、排序后重新拼接
  • 为两个DataFrame添加这个统一的匹配键列
  • 基于匹配键进行合并,最后可按需删除该键列

完整代码示例

import pandas as pd

df1 = pd.DataFrame({'name':['Dominik Hull D',
                            'Lulu Castaneda',
                            'Zachary Pearce',
                            'Paul Lewis',
                            'Neave Potts',
                            'Ruth Callahan',
                            'Evelyn Haney W',
                            'Julie Mclaughlin',
                            'Kaleb Hardin',
                            'Kayleigh Little',
]})

df2 = pd.DataFrame({'name':['Mclaughlin Julie',
                            'Hardin Kaleb',
                            'Hull D Dominik',
                            'Castaneda Lulu',
                            'Callahan Ruth',
                            'Haney W Evelyn',
                            'Pearce Zachary',
                            'Lewis Paul',
                            'Potts Neave',
                            'Little Kayleigh',
], 'value':[0,1,2,3,4,5,6,7,8,9]})

# 定义生成匹配键的函数
def get_match_key(name):
    # 拆分姓名为单词列表,按字母排序后拼接
    parts = sorted(name.split())
    return ' '.join(parts)

# 为两个DataFrame添加匹配键列
df1['match_key'] = df1['name'].apply(get_match_key)
df2['match_key'] = df2['name'].apply(get_match_key)

# 基于匹配键合并两表
new_df = pd.merge(df1, df2, on='match_key', how='left')
# 按需保留原姓名列,删除匹配键列
new_df = new_df[['name_x', 'name_y', 'value']].rename(columns={'name_x':'df1_name', 'name_y':'df2_name'})

print(new_df)

代码说明

  • get_match_key函数:把姓名拆分成单词后排序,比如Dominik Hull D拆分后排序得到['D', 'Dominik', 'Hull'],拼接成D Dominik Hull;对应的Hull D Dominik处理后也是同样的字符串,确保匹配。
  • 合并后可以根据需求调整列名和保留的列,示例中保留了两边的原姓名和value列,方便验证匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:55:04