web-dev-qa-db-fra.com

Supprimer les lignes en double de Pandas dataframe où seules certaines colonnes ont la même valeur

J'ai un pandas dataframe comme suit:

A   B   C
1   2   x
1   2   y
3   4   z
3   5   x

Je veux qu'il ne reste qu'une ligne de lignes qui partagent les mêmes valeurs dans des colonnes spécifiques. Dans l'exemple ci-dessus, je veux dire les colonnes A et B . En d'autres termes, si les valeurs des colonnes A et B apparaissent plusieurs fois dans la trame de données, une seule ligne doit rester (laquelle n'a pas d'importance).

FWIW: le nombre maximum de lignes dites en double (c'est-à-dire où la colonne A et B sont les mêmes) est 2.

Le résultat devrait ressembler à ceci:

A   B   C
1   2   x
3   4   z
3   5   x

ou

A   B   C
1   2   y
3   4   z
3   5   x
7
beta

Utilisation drop_duplicates avec le paramètre subset, pour ne conserver que les dernières lignes dupliquées, ajoutez keep='last':

df1 = df.drop_duplicates(subset=['A','B'])
#same as
#df1 = df.drop_duplicates(subset=['A','B'], keep='first')
print (df1)
   A  B  C
0  1  2  x
2  3  4  z
3  3  5  x

df2 = df.drop_duplicates(subset=['A','B'], keep='last')
print (df2)
   A  B  C
1  1  2  y
2  3  4  z
3  3  5  x
19
jezrael