2017-09-14 29 views
1

私はパンダのデータフレーム内のグループごとの値の平均を探す

df = pd.DataFrame(
      {'indicator': ['indicator 1', 'indicator 1', 'indicator 2', 'indicator 2'], 
      'year':[2014,2014,2015,2015], 
      'value type': ['upper', 'lower', 'upper', 'lower'], 
      'value':[12.3, 10.2, 15.4, 13.2] 
      }, 
      index=[1,2,3,4]) 

を次のように私は平均してこれを上限値と下限値を取り外して交換したい各指標の上限値と下限値を与えるデータフレームを持っています2つの値の

どうすればいいですか?

答えて

2

groupbytransformによってmeanとすることができます。

df['value'] = df.groupby('indicator')['value'].transform('mean') 

df 
    indicator value value type year 
1 indicator 1 11.25  upper 2014 
2 indicator 1 11.25  lower 2014 
3 indicator 2 14.30  upper 2015 
4 indicator 2 14.30  lower 2015 

それとも、あなたは指標ごとに1つのだけの行をしたい場合は、aggを使用しています。あなたの代わりに列とインデックスが必要な場合

df = df.groupby('indicator').agg('mean') 
df 
      value year 
indicator    
indicator 1 11.25 2014 
indicator 2 14.30 2015 

reset_index呼び出し:

df = df.reset_index() 
df 
    indicator value year 
0 indicator 1 11.25 2014 
1 indicator 2 14.30 2015 
関連する問題