2 votes

Comment vérifier la duplication au niveau du groupe ?

Comment puis-je vérifier les groupes dupliqués et les supprimer ? Voici mon cadre de données :

Group     Value_1      Value_2
 A          17           0.1
 A          20           0.8
 A          22           0.9
 A          24           0.13

 B          17           0.1
 B          20           0.8
 B          22           0.9
 B          24           0.13

 C          17           0.1
 C          20           0.8
 C          22           0.9
 C          26           0.11    

Dans ce cadre de données, les groupes A et B sont en double, tandis que le groupe C ne l'est pas, car son quatrième élément est différent et il est donc plus profond pour être unique et non en double :

Group     Value_1      Value_2
 A          17           0.1
 A          20           0.8
 A          22           0.9
 A          24           0.13

 C          17           0.1
 C          20           0.8
 C          22           0.9
 C          26           0.11    

J'ai essayé de faire un groupage et de vérifier les doublons, mais cela vérifiera les valeurs au niveau de l'observation. Comment vérifier les doublons au niveau du groupe ?

1voto

jezrael Points 290608

Vous pouvez utiliser groupby et agréger par agg con frozenset puis supprimer les doublons en drop_duplicates (par défaut par toutes les colonnes) et obtenir des indices - tous les noms de groupes :

idx = df.groupby('Group').agg(frozenset).drop_duplicates().index
#alternative solution
idx = df.groupby('Group').agg(tuple).drop_duplicates().index

Ou de le remodeler en cumcount con set_index y unstack :

g = df.groupby('Group').cumcount()
idx = df.set_index(['Group',g]).unstack().drop_duplicates().index

Dernier filtre par boolean indexing con isin :

df = df[df['Group'].isin(idx)]
print (df)
   Group  Value_1  Value_2
0      A       17     0.10
1      A       20     0.80
2      A       22     0.90
3      A       24     0.13
8      C       17     0.10
9      C       20     0.80
10     C       22     0.90
11     C       26     0.11

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X