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

基于两列去重并清理不一致数据的Pandas技术问询

解决Pandas中重复ID组的不一致数据清理问题

没问题,这个需求其实可以通过分组筛选+去重两步轻松搞定,我给你详细拆解实现过程:

首先先构造你给出的示例数据方便测试:

import pandas as pd

df = pd.DataFrame({
    'a': [1, 1, 2, 3, 3],
    'b': [1, 1, 4, 5, 5],
    'c': [1, 0, 1, 0, 0]
})

完整解决方案代码

# 第一步:过滤掉同一ID组(a+b)中c值同时存在0和1的整组数据
filtered = df.groupby(['a', 'b']).filter(lambda group: group['c'].nunique() == 1)

# 第二步:对剩下的验证一致的重复组,只保留一行,并重置索引
result = filtered.drop_duplicates(subset=['a', 'b']).reset_index(drop=True)

代码逐步解释

  1. 分组筛选矛盾组:groupby(['a', 'b']).filter(...)会按'a'和'b'作为ID分组,然后检查每组的'c'列有多少种唯一值。如果唯一值数量是1,说明这个组的验证结果完全一致,保留整组;如果是2(同时存在0和1),就直接把这个矛盾组全部删掉。
  2. 去重+重置索引:经过第一步筛选后,剩下的都是验证结果统一的组,但可能有重复行。用drop_duplicates(subset=['a', 'b'])保留每组的第一行,最后用reset_index(drop=True)把索引重置为从0开始的连续数字,得到干净的结果。

最终运行结果

执行后result就是你预期的样子:

a  b  c
0  2  4  1
1  3  5  0

这个方案完全适配每组有多个重复项的场景——不管同一ID组有多少条重复行,只要验证结果一致就只留一行;如果验证结果矛盾,整组都会被彻底清理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:59:37