Maison > développement back-end > Tutoriel Python > Comment trouver des lignes avec le nombre maximum dans les opérations Pandas GroupBy ?

Comment trouver des lignes avec le nombre maximum dans les opérations Pandas GroupBy ?

Susan Sarandon
Libérer: 2024-12-29 19:16:16
original
148 Les gens l'ont consulté

How to Find Rows with the Maximum Count in Pandas GroupBy Operations?

Obtenir des lignes avec un nombre maximum dans les groupes Pandas

Problème :

Comment identifier les lignes avec la valeur la plus élevée pour la colonne « compte » dans un DataFrame pandas lors d'un regroupement par plusieurs colonnes ?

Solution :

Étape 1 : Trouver le nombre maximum pour chaque groupe

Pour déterminer le nombre maximum pour chacun group, utilisez les fonctions groupby() et max() :

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

Cela créera une série contenant le nombre maximum pour chaque group.

Étape 2 : Identifier les lignes avec un nombre maximum

Pour obtenir les indices des lignes avec un nombre maximum dans le DataFrame d'origine, utilisez la méthode transform() :

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

Cela créera une série booléenne où True indique les lignes avec un maximum count.

Étape 3 : Filtrer les lignes en fonction du nombre maximum

Enfin, filtrez le DataFrame à l'aide de l'indexation booléenne pour sélectionner uniquement les lignes avec le nombre maximum :

result = df[idx]
Copier après la connexion

Cela renverra un nouveau DataFrame contenant uniquement les lignes avec la valeur la plus élevée pour la colonne « compte » dans chaque groupe.

Exemples :

Exemple 1 :

df = pd.DataFrame({
    'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [3, 2, 5, 8, 10, 1, 2, 2, 7]
})
Copier après la connexion

Sortie :

   Sp Mt Value  count
0  MM1 S1     a      3
2  MM1 S3    cb      5
3  MM2 S3    mk      8
4  MM2 S4    bg     10
8  MM4 S2   uyi      7
Copier après la connexion

Exemple 2 :

df = pd.DataFrame({
    'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [10, 1, 2, 8, 8]
})
Copier après la connexion

Sortie :

   Sp Mt Value  count
4  MM2 S4    bg     10
7  MM4 S2    cb      8
8  MM4 S2   uyi      8
Copier après la connexion

Remarque : Si plusieurs lignes au sein d'un groupe ont le nombre maximum, toutes ces lignes seront renvoyées.

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