2017-04-04 62 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