Python 使用groupby和aggregate后使用多索引访问列

Python 使用groupby和aggregate后使用多索引访问列,python,pandas,group-by,aggregate,multi-index,Python,Pandas,Group By,Aggregate,Multi Index,我正在使用df.groupby()方法: g1 = df[['md', 'agd', 'hgd']].groupby(['md']).agg(['mean', 'count', 'std']) 它生产的正是我想要的 agd hgd mean count std mean count std md

我正在使用
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平均值
)上绘制散点图,并添加适当的误差条

这可能吗?也许通过使用索引?

1)您可以重命名列并按正常方式继续(将摆脱多重索引)

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


可以执行您正在搜索的操作,它被称为
transform
。您将在pandas文档中找到一个完全符合您搜索内容的示例。

这很有帮助!谢谢但是我如何在x轴上绘制md呢?它不允许我重命名-4-+4 md值:/…如果重命名列,md是您的索引,您可以通过
g1.index.values
访问其值。更好的是,您可以使用g1.plot(…),默认情况下,它将使用索引作为x值(取决于您正在绘制的绘图类型)。您可以通过g1.index=(列表或数组或其他方式)更改索引值。完美!非常感谢您抽出时间来帮助我:)嗯。。。g1.图(x=g1.index.values,y=g1.hgd_mean,kind=“scatter”)在重命名后不起作用…与想法相关:
g1.columns = ['agd_mean', 'agd_std','hgd_mean','hgd_std']
g1['agd']['mean count']