Maison >développement back-end >Tutoriel Python >Comment trouver des lignes avec le nombre maximum dans les opérations Pandas GroupBy ?
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()
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']
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]
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] })
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
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] })
Sortie :
Sp Mt Value count 4 MM2 S4 bg 10 7 MM4 S2 cb 8 8 MM4 S2 uyi 8
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!