Maison >développement back-end >Tutoriel Python >Comment rechercher des lignes avec la valeur minimale dans une colonne à l'aide de Pandas GroupBy ?

Comment rechercher des lignes avec la valeur minimale dans une colonne à l'aide de Pandas GroupBy ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 00:16:291047parcourir

How to Find Rows with the Minimum Value in a Column Using Pandas GroupBy?

Sélection de lignes avec une valeur minimale dans une colonne à l'aide de Pandas GroupBy

Scénario de problème

Étant donné un DataFrame Pandas contenant plusieurs colonnes, la tâche consiste à identifier et sélectionnez les lignes avec la valeur minimale dans une colonne spécifique pour chaque valeur unique dans une autre colonne. Par exemple, dans un DataFrame avec les colonnes A, B et C, vous souhaitez récupérer les lignes avec la valeur B minimale pour chaque valeur A.

Solution utilisant GroupBy et idxmin

Une solution simple et Une approche efficace pour résoudre ce problème consiste à utiliser les fonctions groupby et idxmin de Pandas. La fonction groupby regroupe les lignes par une colonne spécifiée, tandis que idxmin renvoie l'index de la ligne avec la valeur minimale dans une autre colonne.

<code class="python">df.loc[df.groupby('A').B.idxmin()]</code>

Cette ligne de code permet d'obtenir le résultat souhaité. Tout d'abord, il utilise groupby('A') pour regrouper le DataFrame par colonne A. Ensuite, il applique la fonction B.idxmin() à chaque groupe, qui renvoie l'index de la ligne avec la valeur B minimale dans ce groupe. Enfin, la fonction loc est utilisée pour sélectionner les lignes correspondant aux valeurs B minimales.

Démonstration

Considérez le DataFrame suivant :

<code class="python">df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],
                   'B': [4, 5, 2, 7, 4, 6],
                   'C': [3, 4, 10, 2, 4, 6]})</code>

L'application du code de la solution produit le résultat suivant :

   A  B   C
2  1  2  10
4  2  4   4

Cette sortie affiche les lignes contenant la valeur B minimale pour chaque valeur A unique (2 pour A=1 et 4 pour A=2).

Considérations supplémentaires

Comme alternative, vous pouvez utiliser reset_index(drop=True) pour supprimer la colonne d'index du DataFrame résultant :

<code class="python">df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)</code>

Cela vous donnera un DataFrame avec uniquement les colonnes dont vous avez besoin .

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