La pandas
drop_duplicates
fonction est idéale pour «uniquifier» une trame de données. Cependant, l'un des arguments de mot-clé à passer est take_last=True
ou take_last=False
, alors que je voudrais supprimer toutes les lignes qui sont en double dans un sous-ensemble de colonnes. Est-ce possible?
A B C
0 foo 0 A
1 foo 1 A
2 foo 1 B
3 bar 1 A
À titre d'exemple, je voudrais supprimer les lignes qui correspondent aux colonnes A
, C
ce qui devrait supprimer les lignes 0 et 1.
python
pandas
duplicates
Jamie Bull
la source
la source
df.reindex(df.iloc[:,[0,2]].drop_duplicates(keep=False).index)
- être ?df.drop_duplicates(subset=[df.columns[0:2]], keep = False)
Je veux juste ajouter à la réponse de Ben sur drop_duplicates :
keep
: {'first', 'last', False}, par défaut 'first'first: supprime les doublons sauf pour la première occurrence.
last: supprime les doublons à l'exception de la dernière occurrence.
Faux: supprime tous les doublons.
Ainsi, définir
keep
sur False vous donnera la réponse souhaitée.la source
Si vous souhaitez que le résultat soit stocké dans un autre ensemble de données:
ou
Si le même ensemble de données doit être mis à jour:
Les exemples ci-dessus supprimeront tous les doublons et en conserveront un, comme
DISTINCT *
dans SQLla source
utiliser
groupby
etfilter
la source
En fait, supprimer les lignes 0 et 1 nécessite uniquement (toutes les observations contenant A et C correspondants sont conservées.):
Mais je suppose que ce que vous voulez vraiment est ceci (une observation contenant A et C correspondants est conservée.):
Éditer:
Maintenant, c'est beaucoup plus clair, donc:
la source
df.drop_duplicates(['A','C'])
que par défaut, garder une observation prendre la première ou la dernière comme je l'ai mentionné dans la question - bien que je viens de réaliser que j'avais le mot-clé incorrect alors que j'écrivais de mémoire. Ce que je veux, c'est supprimer toutes les lignes identiques sur les colonnes d'intérêt (A et C dans les données d'exemple).Essayez ces différentes choses
ou
ou
la source