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

如何在两个DataFrame间实现Key匹配的一对一员工关联并去重

解决方案

要实现DF2员工不重复匹配的一对一绑定,核心是给每个key分组内的记录分配唯一匹配序号,避免普通merge产生的笛卡尔积重复。具体步骤如下:

  1. 给两个DataFrame的key分组添加组内自增序号
  2. 以key+序号为关联键做左连接,实现一对一匹配
  3. 整理结果列名

代码实现

假设你的两个DataFrame名为df1(A组)和df2(B组):

# 为df1的每个key分组添加匹配序号
df1['match_idx'] = df1.groupby('key').cumcount()
# 为df2的每个key分组添加匹配序号
df2['match_idx'] = df2.groupby('key').cumcount()

# 按key和匹配序号进行左连接,确保一对一匹配
matched_df = df1.merge(df2, on=['key', 'match_idx'], how='left')

# 整理目标列并修改列名
result = matched_df[['employee_id_x', 'key', 'employee_id_y']].rename(
    columns={
        'employee_id_x': 'employee_id_df1',
        'employee_id_y': 'employee_id_df2'
    }
)

# 可选:过滤未匹配到的行(根据需求决定是否保留)
result = result.dropna(subset=['employee_id_df2'])

原理说明

groupby('key').cumcount()会为每个key分组内的行从0开始生成连续序号,这样DF1中某key下的第n条记录,只会匹配DF2中同key下的第n条记录,彻底避免DF2员工被重复匹配的问题,最终得到你期望的一对一匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:10:51