Maison >développement back-end >Tutoriel Python >Comment ajouter efficacement une colonne de compteur séquentiel aux groupes Pandas DataFrame ?

Comment ajouter efficacement une colonne de compteur séquentiel aux groupes Pandas DataFrame ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-23 21:29:11458parcourir

How to Efficiently Add a Sequential Counter Column to Pandas DataFrame Groups?

Ajouter une colonne de compteur séquentiel sur les groupes à une trame de données Pandas sans rappel

Le code Python fourni montre une façon d'ajouter un compteur séquentiel colonne (seq) à une trame de données en effectuant des opérations de regroupement sur des colonnes spécifiques (« c1 » et « c2 ») et en appliquant une fonction personnalisée. Cependant, il peut exister une approche plus efficace pour obtenir ce résultat sans avoir besoin d'un rappel.

Une alternative consiste à utiliser la fonction cumcount(), qui offre un moyen pratique de générer des nombres séquentiels au sein des groupes. Voici une solution améliorée :

df['seq'] = df.groupby(['c1', 'c2']).cumcount() + 1

Cette ligne ajoute une nouvelle colonne nommée « seq » au dataframe, contenant des numéros séquentiels pour chaque groupe défini par les colonnes « c1 » et « c2 ». La fonction cumcount() est appliquée le long des groupes spécifiés et le résultat est décalé de 1 pour démarrer le décompte à partir de 1 au lieu de 0.

Voici le résultat du dataframe modifié :

   c1 c2  v1  seq
0   A  X   3    1
1   A  X   5    2
2   A  Y   7    1
3   A  Y   1    2
4   B  X   3    1
5   B  X   1    2
6   B  X   3    3
7   B  Y   1    1
8   C  X   7    1
9   C  Y   4    1
10  C  Y   1    2
11  C  Y   6    3

En utilisant cumcount(), la colonne du compteur séquentiel est ajoutée à la trame de données d'origine, éliminant ainsi le besoin d'une fonction de rappel et simplifiant le code.

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