Python 删除不一致数据时基于两列删除重复项
我有这样一个熊猫数据框:Python 删除不一致数据时基于两列删除重复项,python,python-3.x,pandas,Python,Python 3.x,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)。我确实知道如何根据前两列的值删除重复数据,但是在这种情况下,我还希望消除不一致的数据,即重复数据验证为正数和负数。例如,前两行重复但不一致,因此我应该删除整个记录,而后两行都重复且一致,因此我保留其中一条记录。预期结果应为: a b
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)。我确实知道如何根据前两列的值删除重复数据,但是在这种情况下,我还希望消除不一致的数据,即重复数据验证为正数和负数。例如,前两行重复但不一致,因此我应该删除整个记录,而后两行都重复且一致,因此我保留其中一条记录。预期结果应为:
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
谢谢耶兹雷尔,你的回答近乎完美,只是遗漏了我要求的关于索引的最后一部分,但这确实是一件非常简单的事情。我刚刚在末尾添加了.reset_index(drop=True)@Simosini-解决方案有问题吗?
print (df.groupby(['a','b'])['c'].transform('nunique'))
0 2
1 2
2 1
3 1
4 1
Name: c, dtype: int64