Maison >développement back-end >Tutoriel Python >Comment supprimer les lignes en double dans un DataFrame tout en donnant la priorité aux valeurs maximales dans une colonne spécifique ?

Comment supprimer les lignes en double dans un DataFrame tout en donnant la priorité aux valeurs maximales dans une colonne spécifique ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 06:16:02501parcourir

How to Remove Duplicate Rows in a DataFrame While Prioritizing Maximum Values in a Specific Column?

Supprimer les lignes en double tout en donnant la priorité aux valeurs maximales dans la colonne B

Le traitement des lignes en double dans un DataFrame peut souvent poser des défis. Dans ce cas, l'objectif est d'éliminer les lignes en double en fonction des valeurs de la colonne A et de conserver la ligne avec la valeur la plus élevée dans la colonne B.

Pour y parvenir, une combinaison d'opérations peut être appliquée. Premièrement, le DataFrame peut être trié par colonne B par ordre décroissant à l'aide de la fonction sort_values. Cela organise les lignes avec les valeurs les plus élevées pour la colonne B en haut.

df = df.sort_values('B', ascending=False)

Ensuite, la fonction drop_duplicates peut être utilisée pour supprimer les lignes en double en fonction des valeurs de la colonne A. Cependant, pour conserver la priorité lignes, le paramètre keep est défini sur last. Cela garantit que la ligne avec la dernière occurrence (généralement la ligne avec la valeur la plus élevée dans la colonne B) est conservée.

df = df.drop_duplicates(subset='A', keep='last')

Alternativement, la fonction groupby combinée avec apply peut être exploitée pour accomplir la tâche. Cette approche regroupe le DataFrame par colonne A et applique une fonction lambda à chaque groupe. Dans la fonction lambda, la méthode idxmax est utilisée pour identifier l'index de la ligne avec la valeur maximale pour la colonne B. Le DataFrame résultant contient uniquement les lignes affectées à ces valeurs maximales.

df = df.groupby('A', group_keys=False).apply(lambda x: x.loc[x.B.idxmax()])

Application de ces méthodes obtient le résultat souhaité en supprimant les lignes en double en fonction de la colonne A tout en préservant les lignes avec les valeurs les plus élevées dans la colonne B.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn