使用pandas groupby后,使用MultiIndex访问列

时间:2016-09-02 20:10:11

标签: python pandas group-by

我使用的是df.groupby()方法:

g1 = df[['md', 'agd', 'hgd']].groupby(['md']).agg(['mean', 'count', 'std'])

它产生了我想要的东西!

         agd                       hgd                
        mean count       std      mean count       std
md                                                    
-4  1.398350     2  0.456494 -0.418442     2  0.774611
-3 -0.281814    10  1.314223 -0.317675    10  1.161368
-2 -0.341940    38  0.882749  0.136395    38  1.240308
-1 -0.137268   125  1.162081 -0.103710   125  1.208362
 0 -0.018731   603  1.108109 -0.059108   603  1.252989
 1 -0.034113   178  1.128363 -0.042781   178  1.197477
 2  0.118068    43  1.107974  0.383795    43  1.225388
 3  0.452802    18  0.805491 -0.335087    18  1.120520
 4  0.304824     1       NaN -1.052011     1       NaN

但是,我现在想要像“普通”数据帧一样访问groupby对象列。

然后我将能够:   1)计算agd和hgd均值的误差   2)在md(x轴)对agd均值(hgd mean)上绘制散点图,并添加适当的误差条。

这可能吗?也许通过玩索引?

提前致谢!

2 个答案:

答案 0 :(得分:2)

1)您可以重命名列并正常进行(将摆脱多索引)

g1.columns = ['agd_mean', 'agd_std','hgd_mean','hgd_std']

2)您可以保持多重索引并依次使用这两个级别(docs

g1['agd']['mean count']

答案 1 :(得分:0)

可以执行您要搜索的内容,并将其称为transform。您将在pandas文档here中找到一个与您正在搜索的内容完全相同的示例。