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
Libérer: 2024-10-29 00:16:29
original
1046 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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

   A  B   C
2  1  2  10
4  2  4   4
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal