Maison  >  Article  >  développement back-end  >  Comment regrouper des valeurs identiques consécutives dans un DataFrame Pandas ?

Comment regrouper des valeurs identiques consécutives dans un DataFrame Pandas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 22:33:10778parcourir

How to Group Consecutive Identical Values in a Pandas DataFrame?

Regroupement de valeurs consécutives dans Pandas DataFrame

Chez les pandas, le regroupement de données peut être une tâche cruciale pour l'analyse et la manipulation des données. Lorsqu'on traite des données séquentielles, il devient souvent nécessaire de regrouper des valeurs consécutives partageant les mêmes caractéristiques.

Problème :

Étant donné un DataFrame avec une colonne contenant des valeurs consécutives, regroupez ces valeurs en segments contigus où les valeurs restent les mêmes.

Par exemple, si la colonne d'origine contient ce qui suit valeurs :

[1, 1, -1, 1, -1, -1]

Le résultat souhaité serait :

[1, 1] [-1 ] [1] [-1, -1]

Solution :

Pour y parvenir regroupement, pandas fournit une approche flexible en utilisant la fonction groupby. Cependant, la simple utilisation de groupby sur la colonne elle-même ne suffira pas. Au lieu de cela, nous devons créer une série personnalisée qui identifie les limites des segments.

Le code suivant montre comment mettre en œuvre cette solution :

df = pd.DataFrame({'a': [1, 1, -1, 1, -1, -1]})

# Create a custom Series that identifies segment boundaries
boundaries = df['a'].ne(df['a'].shift()).cumsum()

# Group data by the segment boundaries
for i, g in df.groupby(boundaries):
    print(i)
    print(g)
    print(g.a.tolist())

Cette approche attribue des numéros séquentiels aux segments consécutifs. où les valeurs restent inchangées. À l'aide de ces numéros, les données sont ensuite regroupées en conséquence et chaque groupe est imprimé avec ses valeurs consécutives correspondantes.

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