python-3.x - Pandas 从多索引级别获取所有值

标签 python-3.x pandas matplotlib pivot-table multi-index

给定以下数据透视表:

df=pd.DataFrame({'A':['a','a','a','a','a','b','b','b','b'],
                 'B':['x','y','z','x','y','z','x','y','z'],
                 'C':['a','b','a','b','a','b','a','b','a'],
                 'D':[7,5,3,4,1,6,5,3,1]})
table = pd.pivot_table(df, index=['A', 'B','C'],aggfunc='sum')
table

            D
A   B   C   
a   x   a   7
        b   4
    y   a   1
        b   5
    z   a   3
b   x   a   5
    y   b   3
    z   a   1
        b   6

我想访问“C”(或级别 2)的每个值作为用于绘图的列表。 我想对“A”和“B”(级别 0 和 1)执行相同的操作,以保留间距,以便我也可以使用这些列表。我最终尝试使用它们通过绘图来创建类似的东西: What I'm ultimately trying to plot

Here's the question from which this one stemmed.

提前致谢!

最佳答案

您可以使用get_level_values从多索引中获取特定级别的索引值:

In [127]:
table.index.get_level_values('C')

Out[127]:
Index(['a', 'b', 'a', 'b', 'a', 'a', 'b', 'a', 'b'], dtype='object', name='C')

In [128]:    
table.index.get_level_values('B')

Out[128]:
Index(['x', 'x', 'y', 'y', 'z', 'x', 'y', 'z', 'z'], dtype='object', name='B')

In [129]:
table.index.get_level_values('A')

Out[129]:
Index(['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], dtype='object', name='A')

get_level_values 接受级别或标签的 int 参数

请注意,对于较高级别,这些值会重复以与最低级别的索引长度相对应,出于显示目的,您看不到此内容

关于python-3.x - Pandas 从多索引级别获取所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190938/

相关文章:

python - 当我需要检查它们是否用完猜测时,有没有办法从 TimeToGuess 类访问我的gueses_left变量

python - Pandas:Groupby 并使用剩余的列名和值创建字典

python - 如何创建 4 个标题,使其成为 CSV 文件中 pandas 数据框中 16 列的标题行?

python - 如何根据上一行的值添加新列

python - 根据从另一个 DataFrame 构建的条件列表选择 Pandas DataFrame 的子集

python - 如何增加 Seaborn Line 的线条粗细

python - 如何在 Django 中获取 Post 数据表单类别?

python - 我可以按列分组并重新采样日期吗?

python - 在matplotlib中修改viridis colormap(替换部分颜色)

python - 如何在Python中垂直拉伸(stretch)绘图