Maison >développement back-end >Tutoriel Python >Comment obtenir des lignes avec le nombre maximum dans des DataFrames Pandas groupés ?

Comment obtenir des lignes avec le nombre maximum dans des DataFrames Pandas groupés ?

DDD
DDDoriginal
2024-12-20 07:14:12768parcourir

How to Get Rows with the Maximum Count in Grouped Pandas DataFrames?

Obtenir des lignes avec un nombre maximum dans des DataFrames Pandas groupés

Problème :

Récupérer toutes les lignes d'un DataFrame Pandas qui ont la valeur maximale pour la colonne "count", regroupée par "Sp" et "Mt" colonnes.

Exemples :

Exemple 1 :

DataFrame d'entrée :

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

Attendu Sortie :

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

Exemple 2 :

DataFrame d'entrée :

Sp Mt Value count
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 8
MM4 S2 uyi 8

Sortie attendue :

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

Solution :

  1. Obtenez le nombre maximum par Groupe :
import pandas as pd

df.groupby(['Sp', 'Mt'])['count'].max()

Ceci renvoie une série avec le nombre maximum pour chaque combinaison unique de « Sp » et « Mt ».

  1. Créer un masque booléen :
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']

Cela crée un masque booléen où True indique les lignes avec le nombre maximum au sein de leur groupe.

  1. Filtrer le DataFrame :
df[idx]

Cela filtre le DataFrame pour inclure uniquement les lignes où le masque idx est True, ce qui donne le résultat souhaité.

Remarque : Plusieurs lignes avec un maximum égal le décompte sera renvoyé s'ils se produisent dans le même groupe.

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