2017-03-23 3 views
0

Wie berechnen mean() oder andere Funktion in bestimmten Zeilen mit GroupBy. Betrachten Sie die folgende Datenrahmen:Anwenden von Funktion auf bestimmte Zeilen mit GroupBy

In[239]: df.groupby(['id'])['summary'] 
Out[239]: 
       summary 
id   
11     2.0 
11     3.0 
11     3.0 
11     3.0 
11     3.0 
11     3.0 
14     NaN 
14     NaN 
14     NaN 
14     NaN 
14     NaN 
14     2.0 
17     NaN 
17     NaN 
17     NaN 
17     NaN 
17     5.0 
17     5.0 
18     4.0 
18     5.0 
18     4.0 
18     3.0 
18     3.0 
18     4.0 
23     2.0 
23     1.0 
23     2.0 
23     1.0 
23     3.0 
23     1.0 
       ... 
81     10.0 
81     9.0 
81     8.0 
81     8.0 
81     9.0 
81     9.0 
82     0.0 
82     0.0 
82     0.0 
82     0.0 
82     0.0 
82     0.0 
83     1.0 
83     0.0 
83     1.0 
83     2.0 
83     2.0 
83     1.0 
84     2.0 
84     0.0 
84     0.0 
84     0.0 
84     1.0 
84     NaN 
85     5.0 
85     4.0 
85     4.0 
85     5.0 
85     5.0 
85     4.0 
  1. Wie mean() von nur die ersten drei Reihen jeder ID berechnen?
  2. Wie wird mean() von maskiert (Index mit einigen Bedingungen) Zeilen innerhalb jeder ID?

Zum Beispiel:

df.groupby(['id'])['summary'].mean() 

wird berechnet Mittelwert() jede Gruppe (durch id definiert), aber es dauert, alle Zeilen.

+0

für die ersten 3 Zeilen, durchlaufen Sie die ersten 3 Elemente in einer Liste mit einer Anzahl. – Artagel

+0

@Artagel, können Sie einen Code zeigen, wie es geht? –

Antwort

2

Das Folgende würde sowohl den Mittelwert der ersten drei Zeilen als auch den Mittelwert einiger Masken ergeben.

df.groupby('id')['summary'].agg([lambda x: x.iloc[:3].mean(), lambda x: x[mask].mean()]) 
+0

Ich habe Lambda komplett verpasst! Genial! –

Verwandte Themen