首页 文章

在groupby之后访问pandas中的分层列

提问于
浏览
3

我使用pandas来分组数据集 . 当我使用不同的函数聚合不同的列时,我得到了一个分层的列结构 .

G1 = df.groupby('date').agg({'col1': [sum, np.mean], 'col2': 'sum', 'col3': np.mean})

结果是:

col1               col2       col3
               sum      mean      sum       mean
date
2000-11-01    1701  1.384052    82336  54.222945
2000-11-02   11101  1.447894   761963  70.027260
2000-11-03   11285  1.479418   823355  77.984268

不幸的是,我在文档中找不到太多关于这个结果的结构 . 我在pandas docs中找到的唯一的东西是分层多索引 .

我如何访问这些值?目前我这样做: X['col1']['mean'] 访问整个 Series

2000-11-01   1.384052   
2000-11-02   1.447894  
2000-11-03   1.479418

因此 X['col1']['mean'][1] 得到值 1.447894 ,但我不知道性能,因为这段代码首先切片 col1 (X ['col1'])导致一个视图/副本(在这种情况下为dunno)实际上包含2列,然后还有另一片 mean -列 .

有小费吗?我在哪里可以找到有关在文档中创建分层列的更多信息?

1 回答

  • 5

    建议是一次性完成这些(没有链接),这特别允许你做任务(而不是分配给视图和修改被垃圾收集) .

    访问MultiIndex *列作为元组:

    In [11]: df[('col1', 'mean')]
    Out[11]:
    date
    2000-11-01    1.384052
    2000-11-02    1.447894
    2000-11-03    1.479418
    Name: (col1, mean), dtype: float64
    

    和使用loc的特定值:

    In [12]: df.loc['2000-11-01', ('col1', 'mean')]
    Out[12]: 1.3840520000000001
    

    (要混合标签,位置和位置,iloc,你必须使用ix)

    In [13]: df.ix[0, ('col1', 'mean')]
    Out[13]: 1.3840520000000001
    

    *这是 is 一个MultiIndex .

相关问题