如何在熊猫中访问多索引级别?

时间:2016-04-24 21:50:21

标签: python pandas dataframe

我想弄清楚每个专栏的意思" One"和"两个"。

这是我的数据帧上的df.columns语句的结果:

MultiIndex(levels=[['Growth %'], ['One', 'Two']],
       labels=[[0, 0], [0, 1]],
       names=[None, 'Years'])

我基本上想要算出" One"中所有数值的均值。和"两个"列。

如果我这样做:

df.mean(axis=0)

我明白了:

Years
Growth %   One 17.215293

           Two 45.213257

dtype: float64

但我只想要这些列的各个值,以便我可以将它们添加到数据帧中。

我尝试过:

df.mean(levels=[['Growth %'], ['One']])

以及类似的变体,但我无法显示这些列的平均值。

任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:2)

所以,这是我过去常常重建的内容:

In [17]: index = pd.MultiIndex(levels=[['Growth %'], ['One', 'Two']], labels=[[0, 0], [0, 1]], names=[None, 'Years'])

In [18]: df = pd.DataFrame(np.random.randn(2,6), index=index)

In [19]: df
Out[19]: 
                       0         1         2         3         4         5
         Years                                                            
Growth % One    0.449989  0.008239 -0.212202 -1.829215  0.609796  0.922987
         Two   -0.819815  0.726769  0.150591  1.851841 -0.639491 -0.637081

In [26]: df.mean(axis=1)
Out[26]: 
          Years
Growth %  One     -0.008401
          Two      0.105469
dtype: float64

那,刚刚返回的是pd.Series,您可以使用正确的索引来获取正确的数据。

试试这个:

df.mean(axis=1)['Growth %']['One']
df.mean(axis=1)['Growth %']['Two']

我希望这有帮助!