2017-03-23 7 views
0

GroupByを使用して特定の行でmean()または他の関数を計算する方法。以下のデータフレームを考えてみましょう: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. 各IDののみ最初の3つの行のmean()を計算するためにどのように?
  2. どのように計算するmean()マスク(各条件のインデックス)各ID内の行?例えば

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

(IDによって定義された)各群の平均値()を計算するが、それはすべての行を取るであろう。

+0

最初の3行は、リスト内の最初の3つの項目をカウントして繰り返します。 – Artagel

+0

@Artagel、コードを表示する方法はありますか? –

答えて

2

以下は、最初の3行の平均といくつかのマスクの平均の両方を取得します。

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

私はラムダを完全に逃した!驚くばかり! –

関連する問題