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

Comment ajouter efficacement une colonne de compteur séquentiel aux DataFrames Pandas groupés ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-17 05:06:24134parcourir

How to Efficiently Add a Sequential Counter Column to Grouped Pandas DataFrames?

Ajouter une colonne de compteur séquentiel sur les groupes à un DataFrame Pandas sans rappel

Dans la bibliothèque pandas, on peut utiliser des méthodes plus efficaces que fonctions de rappel pour ajouter des colonnes de compteurs séquentiels aux trames de données groupées. La fonction cumcount() propose une approche alternative. Voici comment l'implémenter :

import pandas as pd

df = pd.DataFrame(
    columns="   index    c1    c2    v1 ".split(),
    data=[
        [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],
    ],
).set_index("index", drop=True)

# Add a sequential counter column
df["seq"] = df.groupby(["c1", "c2"]).cumcount() + 1
print(df)

Cet extrait de code regroupe le dataframe par « c1 » et « c2 », puis applique la fonction cumcount() à chaque groupe pour compter les lignes de ce groupe. Le résultat est une trame de données avec une colonne « seq » supplémentaire contenant les décomptes séquentiels pour chaque groupe :

   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

Cette approche élimine le besoin de fonctions de rappel et fournit une solution plus concise et efficace pour ajouter des colonnes de compteurs séquentiels. aux dataframes pandas groupés.

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