2017-04-04 71 views
1

我有以下的代碼只是多索引一些公司數據:熊貓:多級索引查找平均值

df_corn_mean = df_corn.set_index(['Year','Value']) 
df_corn_mean 

它導致這樣的:

   County  Commodity 
Year Value  
2016 171.2 BARTHOLOMEW CORN 
     180.1 BOONE   CORN 
     190.6 CLINTON  CORN 
     178.9 DECATUR  CORN 
     179.5 HAMILTON  CORN 

有好幾年。我想要每年的價值的意思。我試圖groupby,我認爲這是正確的方法,但我遇到了麻煩。任何幫助表示讚賞。

+1

你只得到15代表!恭喜!這意味着你現在能夠投票。隨意投票所有回答你的問題,這是有益的! – piRSquared

回答

1

您在索引中放置了'Value'。沒什麼大不了的,只是通過groupby來增加獲得平均值所需的步驟數。

我就回去了一步,做

df_corn.groupby('Year').Value.mean() 

Year 
2016 180.06 
Name: Value, dtype: float64 

你也可以做到以下幾點,如果它適合你的目的更

df_corn_mean = df_corn.set_index(['Year', 'Value'], drop=False) 

drop=False讓你設置爲在索引中的列數據框也是適當的。這意味着你仍然可以很容易地抓住他們的groupby計算

現在:

df_corn_mean.groupby(level='Year').Value.mean() 
+0

太棒了!正是我需要的。謝謝。 –

1

根據您的需求,你要麼需要降低數據(見@piRSquared solution)或不:也

In [48]: df_corn.groupby('Year')['Value'].transform('mean') 
Out[48]: 
0 180.06 
1 180.06 
2 180.06 
3 180.06 
4 180.06 
Name: Value, dtype: float64