微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 删除基于两列的重复项,同时删除不一致的数据

我有一个像这样的pandas数据帧:

   a  b  c
0  1  1  1
1  1  1  0
2  2  4  1    
3  3  5  0
4  3  5  0

前两列(‘a’和’b’)是ID,而最后一列(‘c’)是验证(0 = neg,1 = pos).我知道如何根据前2列的值删除重复项,但在这种情况下,我还想摆脱不一致的数据,即重复数据验证为正面和负面.因此,例如前两行是重复但不一致的,因此我应该删除整个记录,而最后两行都是重复和一致的,所以我保留其中一条记录.预期的结果是:

   a  b  c
0  2  4  1
1  3  5  0

真正的数据帧每组可以有两个以上的重复项
正如您所看到的,索引也已更改.谢谢.

解决方法:

首先按GroupBy.transformSeriesGroupBy.nunique过滤行,仅获取具有boolean indexingDataFrame.drop_duplicates的唯一值组:

df = (df[df.groupby(['a','b'])['c'].transform('nunique').eq(1)]
           .drop_duplicates(['a','b'])
           .reset_index(drop=True))
print (df)
   a  b  c
0  2  4  1
1  3  5  0

详情:

print (df.groupby(['a','b'])['c'].transform('nunique'))
0    2
1    2
2    1
3    1
4    1
Name: c, dtype: int64

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐