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
Susan Sarandonoriginal
2024-12-26 03:59:09992parcourir

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()

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]

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()

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!

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