Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich aufeinanderfolgende Werte in einer Pandas DataFrame-Spalte effizient gruppieren?

Wie kann ich aufeinanderfolgende Werte in einer Pandas DataFrame-Spalte effizient gruppieren?

DDD
DDDOriginal
2024-12-05 04:54:08446Durchsuche

How Can I Efficiently Group Consecutive Values in a Pandas DataFrame Column?

Gruppieren aufeinanderfolgender Werte in Pandas-DataFrames

In einem DataFrame stoßen Sie möglicherweise auf eine Spalte mit aufeinanderfolgenden Werten, die Sie gruppieren müssen. Betrachten Sie beispielsweise die folgende Spalte mit Werten:

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

Um diese Werte effizient in gewünschte Gruppen zu gruppieren, wie:

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

Folgen Sie diesen Schritten mithilfe der Pandas-Bibliothek:

Lösung mit benutzerdefinierter Seriengruppierung

Sie können eine benutzerdefinierte Serie nutzen, um dies zu erreichen Gruppierung. Hier ist der Ansatz:

import pandas as pd

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

# Use ne() and cumsum() to create grouping indicator
ind = df['a'].ne(df['a'].shift()).cumsum()

# Group by this indicator
for i, g in df.groupby(ind):
    # Print grouping key
    print(i)
    
    # Print rows in group
    print(g)
    
    # Convert values to list for display
    print(g.a.tolist())

Dieser Code gibt die gewünschten Gruppierungen und Werte aus:

1
   a
0  1
1  1
[1, 1]
2
   a
2 -1
[-1]
3
   a
3  1
[1]
4
   a
4 -1
5 -1
[-1, -1]

Das obige ist der detaillierte Inhalt vonWie kann ich aufeinanderfolgende Werte in einer Pandas DataFrame-Spalte effizient gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn