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.transform
和SeriesGroupBy.nunique
过滤行,仅获取具有boolean indexing
和DataFrame.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] 举报,一经查实,本站将立刻删除。