首页 > 解决方案 > Pandas 在组之间删除重复项

问题描述

我有一个数据框,我只想跨组删除重复项。

   A  B  C  D
0  1  0  2  Group 1
1  1  1  1  Group 2
2  1  1  1  Group 2
3  1  1  1  Group 2  
4  3  8  3  Group 2
5  3  8  3  Group 1
6  2  9  1  Group 2  
7  2  9  1  Group 1
8  1  0  2  Group 1

在上面的数据框中,我想要以下输出:

  A  B  C  D
0  1  0  2  Group 1
1  1  1  1  Group 2
2  1  1  1  Group 2
3  1  1  1  Group 2  
8  1  0  2  Group 1

对于每个跨组匹配(跨组 1 和 2),如果存在配对匹配,则将其删除。因此,删除了索引 4 和 5,以及删除了 6 和 7。如您所见,不会删除组内的重复项(索引 0,8 和 2,3)。

对此的任何帮助都非常感谢。

标签: pythonpandas

解决方案


我们可以做的duplicated

df=df[df.duplicated(keep=False)]
   A  B  C       D
0  1  0  2  Group1
1  1  1  1  Group2
2  1  1  1  Group2
3  1  1  1  Group2
8  1  0  2  Group1

更新

df=df.groupby(list('ABC')).filter(lambda x : (x.nunique()==1).all())
   A  B  C       D
0  1  0  2  Group1
1  1  1  1  Group2
2  1  1  1  Group2
3  1  1  1  Group2
8  1  0  2  Group1

推荐阅读