Maison > développement back-end > Tutoriel Python > Comment trouver des lignes avec des valeurs de nombre maximales dans des groupes dans Pandas ?

Comment trouver des lignes avec des valeurs de nombre maximales dans des groupes dans Pandas ?

Susan Sarandon
Libérer: 2024-12-26 03:59:09
original
1019 Les gens l'ont consulté

How to Find Rows with Maximum Count Values within Groups in Pandas?

Regrouper les données et récupérer les lignes avec des valeurs de nombre maximales

Pour déterminer les lignes avec des valeurs de nombre maximales dans les groupes, des opérations groupby peuvent être utilisées sur un DataFrame pandas.

Considérez ce qui suit DataFrame :

Sp Mt Value count
MM1 S1 a 3
MM1 S1 n 2
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 2
MM4 S2 uyi 7

Exemple 1 :

Notre objectif est d'identifier les lignes au sein de chaque groupe (définies par ['Sp', 'Mt']) qui ont la valeur de comptage la plus élevée. Dans l'exemple 1, nous avons le résultat attendu suivant :

Sp Mt Value count
MM1 S1 a 3
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM4 S2 uyi 7

Pour y parvenir, nous pouvons d'abord obtenir la valeur de comptage maximale pour chaque groupe :

df.groupby(['Sp', 'Mt'])['count'].max()
Copier après la connexion
Copier après la connexion

Ce qui produit :

Sp Mt
MM1 S1 3
MM1 S3 5
MM2 S3 8
MM2 S4 10
MM4 S2 7

Ensuite, pour extraire les indices du DataFrame d'origine où la valeur de comptage est égale à la valeur maximale dans chaque group :

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
df[idx]
Copier après la connexion

Ce qui donne le résultat souhaité.

Exemple 2 :

Dans l'exemple 2, le résultat attendu est le suivant :

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

Dans ce scénario, il existe plusieurs lignes dans le groupe MM4 avec la valeur de comptage maximale (8). En utilisant la même approche que précédemment, nous obtenons les deux lignes :

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

Mise à jour :

Si l'objectif est d'ajouter une nouvelle colonne au DataFrame indiquant la valeur de comptage maximale au sein de chaque groupe, nous pouvons utiliser la méthode de transformation pour calculer la valeur de chacun row :

df.groupby(['Sp', 'Mt'])['count'].max()
Copier après la connexion
Copier après la connexion

Cela donnera un DataFrame qui inclut la colonne count_max, qui contient la valeur de comptage maximale pour chaque groupe :

Sp Mt Value count count_max
MM1 S1 a 3 3
MM1 S1 n 2 3
MM1 S3 cb 5 5
MM2 S3 mk 8 8
MM2 S4 bg 10 10
MM2 S4 dgd 1 10
MM4 S2 rd 2 7
MM4 S2 cb 2 7
MM4 S2 uyi 7 7

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