Pandas: so gruppieren sie nach index und führen eine berechnung durch
Mit den folgenden Methoden können Sie in Pandas nach einer oder mehreren Indexspalten gruppieren und Berechnungen durchführen:
Methode 1: Gruppieren nach einer Indexspalte
df. groupby (' index1 ')[' numeric_column ']. max ()
Methode 2: Gruppieren Sie nach mehreren Indexspalten
df. groupby ([' index1 ',' index2 '])[' numeric_column ']. sum ()
Methode 3: Gruppieren nach Indexspalte und regulärer Spalte
df. groupby ([' index1 ',' numeric_column1 '])[' numeric_column2 ']. nunique ()
Die folgenden Beispiele zeigen, wie die einzelnen Methoden mit dem folgenden Pandas-DataFrame verwendet werden, der über einen MultiIndex verfügt:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
' position ': ['G', 'G', 'G', 'F', 'F', 'G', 'G', 'F', 'F', 'F'],
' points ': [7, 7, 7, 19, 16, 9, 10, 10, 8, 8],
' rebounds ': [8, 8, 8, 10, 11, 12, 13, 13, 15, 11]})
#set 'team' column to be index column
df. set_index ([' team ', ' position '], inplace= True )
#view DataFrame
df
rebound points
team position
A G 7 8
G 7 8
G 7 8
F 19 10
F 16 11
B G 9 12
G 10 13
F 10 13
F 8 15
F 8 11
Methode 1: Gruppieren nach einer Indexspalte
Der folgende Code zeigt, wie Sie den Maximalwert der Spalte „Punkte“ ermitteln, gruppiert nach der Indexspalte „Position“:
#find max value of 'points' grouped by 'position index column
df. groupby (' position ')[' points ']. max ()
position
F 19
G 10
Name: points, dtype: int64
Methode 2: Gruppieren Sie nach mehreren Indexspalten
Der folgende Code zeigt, wie man die Summe der Spalte „Punkte“ ermittelt, gruppiert nach den Indexspalten „Team“ und „Position“:
#find max value of 'points' grouped by 'position index column
df. groupby ([' team ', ' position '])[' points ']. sum ()
team position
AF35
G21
BF 26
G 19
Name: points, dtype: int64
Methode 3: Gruppieren nach Indexspalte und regulärer Spalte
Der folgende Code zeigt, wie man die Anzahl der eindeutigen Werte in der Spalte „Rebounds“ ermittelt, gruppiert nach der Indexspalte „Team“ und der regulären Spalte „Punkte“:
#find max value of 'points' grouped by 'position index column
df. groupby ([' team ', ' points '])[' rebounds ']. nunique ()
team points
At 7 1
16 1
19 1
B 8 2
9 1
10 1
Name: rebounds, dtype: int64
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So zählen Sie eindeutige Werte in Pandas
So reduzieren Sie MultiIndex in Pandas
So ändern Sie einen oder mehrere Indexwerte in Pandas
So setzen Sie einen Index in Pandas zurück