Maison > développement back-end > Tutoriel Python > Comment ajouter efficacement une colonne de compteur séquentiel aux données groupées dans Pandas ?

Comment ajouter efficacement une colonne de compteur séquentiel aux données groupées dans Pandas ?

Linda Hamilton
Libérer: 2024-12-24 14:04:15
original
889 Les gens l'ont consulté

How to Efficiently Add a Sequential Counter Column to Grouped Data in Pandas?

Ajouter une colonne de compteur séquentiel aux groupes dans Pandas DataFrame

Dans le contexte de la gestion des données, il existe une tâche courante consistant à ajouter un compteur séquentiel colonne aux groupes dans une trame de données pandas. Une approche consiste à utiliser une fonction de rappel comme vous l'avez démontré :

def callback(x):
    x['seq'] = range(1, x.shape[0] + 1)
    return x
Copier après la connexion

Bien que cette méthode fonctionne, elle peut être lourde et implique de définir une fonction distincte. Une solution plus concise et élégante consiste à utiliser la méthode cumcount() :

df.groupby(['c1', 'c2']).cumcount()
Copier après la connexion

Cette méthode calcule le nombre cumulé pour chaque groupe, attribuant efficacement un numéro séquentiel à chaque ligne d'un groupe. Par exemple, considérons le dataframe suivant :

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

L'application de cumcount() à ce dataframe, regroupé par c1 et c2, produirait :

index 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

Pour commencer l'ordre à 1 à la place de 0, ajoutez simplement 1 au résultat cumcount() :

df.groupby(['c1', 'c2']).cumcount() + 1
Copier après la connexion

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