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

标签 python pandas indexing group-by hierarchical-data

我使用 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 文档中发现的唯一内容是分层多索引。

如何访问这些值?
目前我做: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']) 导致 View /副本(不知道在这种情况下是哪个)实际上包含 2 列,然后还有另一个切片 mean -柱子。

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

最佳答案

建议是一次性完成这些操作(无需链接),这尤其允许您进行分配(而不是分配给 View 并且修改被垃圾收集)。

以元组形式访问 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

(要混合标签,loc和位置,iloc,必须使用ix)
In [13]: df.ix[0, ('col1', 'mean')]
Out[13]: 1.3840520000000001

*这个一个多索引。

关于python - 在groupby之后访问pandas中的分层列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179284/

相关文章:

python - openCV的conda错误-找不到符号

python - 撤消系列差异

python - 将 datetime64 列拆分为 pandas 数据框中的日期和时间列

python - 将多条记录分组为一条记录并在 python 数据框中赋值

python - 如何在 pandas dataframe Python 中查找带有分隔符的字符串并将其替换为新行

php - Mongodb 2dsphere索引嵌套数组字段

mysql - SQL - 避免 1 条记录中的 2 列具有相同的值

Python(17874,0x111e92dc0)malloc : can't allocate region

sql - 为什么我必须在插入超过 150,000 条记录后重建表的索引?

python - 开发和发布自定义 Django 模块