Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir efficacement les meilleurs enregistrements de chaque groupe dans un DataFrame Pandas ?

Comment puis-je obtenir efficacement les meilleurs enregistrements de chaque groupe dans un DataFrame Pandas ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 18:03:10726parcourir

How Can I Efficiently Get the Top Records from Each Group in a Pandas DataFrame?

Pandas : obtenir efficacement les enregistrements les plus importants au sein des groupes

Lorsque vous travaillez avec Pandas DataFrames, il est souvent nécessaire d'extraire les principaux enregistrements de chaque groupe . Une approche courante consiste à utiliser les fonctions « groupby » et « apply » pour énumérer les enregistrements au sein de chaque groupe.

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()

Cependant, il existe une approche plus rationalisée :

df.groupby('id').head(2)

Cette La méthode récupère directement les enregistrements les plus élevés sans avoir besoin de calculs intermédiaires. De plus, le DataFrame généré conserve son index d'origine.

Pour aplatir le MultiIndex résultant, utilisez :

df.groupby('id').head(2).reset_index(drop=True)

Cela produira le DataFrame suivant :

id value
1 1
1 2
2 1
2 2
3 1
4 1

Alternativement , vous pouvez utiliser la fonction de fenêtre "row_number()" de SQL pour énumérer efficacement les enregistrements au sein des groupes. Cette fonctionnalité, cependant, n'est actuellement pas disponible dans Pandas.

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