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

如何基于同ID下的comments/priority唯一性合并两个Pandas DataFrame

解决方案

先确认你的示例数据:

import pandas as pd

df_test = pd.DataFrame(data=None, columns = ['file', 'comments', 'priority', 'id'])
df_test.file = ['file_1', 'file_1_v2', 'file_2_old', 'file_2_new', 'file_3', 'file_4_v1', 'file_4_v2']
df_test.comments = ['abc', 'def', 'xyz', 'ghi', 'pqr', 'uvw', 'pqr']
df_test.priority = [10, 100, 15, 25, 50, 20, 40]
df_test.id = [1, 1, 2, 2, 3, 4, 4]

df_test2 = pd.DataFrame(data=None, columns = ['file', 'comments', 'priority', 'id'])
df_test2.file = ['file_1', 'file_1_test', 'file_2_old', 'file_3_s', 'file_4_v3', 'file_4_v4']
df_test2.comments = ['abd', 'def', 'xya', 'pqr', 'uvw', 'pqr']
df_test2.priority = [10, 110, 35, 50, 20, 50]
df_test2.id = [1, 1, 2, 3, 4, 4]

你之前的全局去重会跨id判断重复,不符合需求。要实现按id维度校验(comments, priority)组合的唯一性,可以按以下步骤操作:

  1. 提取df_test中每个id对应的(comments, priority)唯一组合集合
    这一步是为了快速判断df_test2的行在对应id下是否已经存在:

    # 按id分组,把每个id下的(comments,priority)对存成集合
    id_existing_pairs = df_test.groupby('id')[['comments', 'priority']].apply(
        lambda group: set(zip(group['comments'], group['priority']))
    ).to_dict()
    
  2. 筛选df_test2中符合条件的行
    遍历df_test2的每一行,检查当前行的(comments,priority)是否不在对应id的已存在集合中:

    # 生成筛选掩码:符合条件的行标记为True
    filter_mask = df_test2.apply(
        lambda row: (row['comments'], row['priority']) not in id_existing_pairs.get(row['id'], set()),
        axis=1
    )
    # 提取需要添加的行
    rows_to_add = df_test2[filter_mask]
    
  3. 合并到原DataFrame
    把筛选出来的行和df_test拼接,重置索引:

    final_df = pd.concat([df_test, rows_to_add], ignore_index=True)
    

验证结果

运行后,rows_to_add会包含df_test2的第1、2、3、6行(对应索引0、1、2、5),和你预期的一致:

  • 第1行(id=1):('abd',10)不在df_test的id=1组合里
  • 第2行(id=1):('def',110)不在df_test的id=1组合里
  • 第3行(id=2):('xya',35)不在df_test的id=2组合里
  • 第6行(id=4):('pqr',50)不在df_test的id=4组合里(df_test的id=4只有('uvw',20)和('pqr',40))

而df_test2中被排除的行:

  • 第4行(id=3):('pqr',50)和df_test的id=3组合重复
  • 第5行(id=4):('uvw',20)和df_test的id=4组合重复

内容的提问来源于stack exchange,提问作者Marcus K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:10:27