【问题标题】:Accessing columns with MultiIndex after using pandas groupby and aggregate使用熊猫 groupby 和聚合后使用 MultiIndex 访问列
【发布时间】:2017-01-11 00:30:58
【问题描述】:

我正在使用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) 计算agdhgd 均值的误差 2) 在md(x 轴)与agd meanhgd mean)上制作散点图,并添加适当的误差线。

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

【问题讨论】:

标签: python pandas group-by aggregate multi-index


【解决方案1】:

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

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

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

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

【讨论】:

  • 这有帮助!谢谢!但是我怎样才能在 x 轴上绘制 md 呢?它不会让我重命名 -4 - +4 md 值:/ ....
  • 如果重命名列,md 是您的索引,您可以通过g1.index.values 访问其值。更好的是,您可以使用g1.plot(...),默认情况下它将使用索引作为您的 x 值(取决于您正在制作的绘图类型)。
  • 您可以通过 g1.index = (list or array 或其他) 更改索引值。
  • 完美!非常感谢您花时间帮助我:)
  • 嗯... g1.plot(x=g1.index.values, y=g1.hgd_mean, kind = "scatter") 重命名后不起作用...想法?跨度>
【解决方案2】:

可以做你正在搜索的事情,它被称为transform。您将在 pandas 文档here 中找到一个完全符合您要求的示例。

【讨论】:

    猜你喜欢
    • 2013-06-06
    • 2021-03-21
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多