python - 如何访问 Pandas 数据框中的多级索引?

标签 python pandas dataframe multidimensional-array

我想调用具有相同索引的那些行。

所以这是示例数据框,

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]

df = pd.DataFrame(np.random.randn(8, 4), index=arrays)

In [16]: df
Out[16]: 
                0         1         2         3
bar one -0.424972  0.567020  0.276232 -1.087401
    two -0.673690  0.113648 -1.478427  0.524988
baz one  0.404705  0.577046 -1.715002 -1.039268
    two -0.370647 -1.157892 -1.344312  0.844885
foo one  1.075770 -0.109050  1.643563 -1.469388
    two  0.357021 -0.674600 -1.776904 -0.968914
qux one -1.294524  0.413738  0.276662 -0.472035
    two -0.013960 -0.362543 -0.006154 -0.923061

我要选择

                0         1         2         3
bar one -0.424972  0.567020  0.276232 -1.087401
baz one  0.404705  0.577046 -1.715002 -1.039268
foo one  1.075770 -0.109050  1.643563 -1.469388
qux one -1.294524  0.413738  0.276662 -0.472035

或者甚至是这种格式

            0         1         2         3
one -0.424972  0.567020  0.276232 -1.087401
one  0.404705  0.577046 -1.715002 -1.039268
one  1.075770 -0.109050  1.643563 -1.469388
one -1.294524  0.413738  0.276662 -0.472035

我试过 df['bar','one] 但它不起作用。我现在确定我应该如何访问多级索引。

最佳答案

您可以使用 MultiIndex 切片(使用 slice(None) 而不是冒号):

df = df.loc[(slice(None), 'one'), :]

结果:

                0         1         2         3
bar one -0.424972  0.567020  0.276232 -1.087401
baz one  0.404705  0.577046 -1.715002 -1.039268
foo one  1.075770 -0.109050  1.643563 -1.469388
qux one -1.294524  0.413738  0.276662 -0.472035

最后你可以删除第一个索引列:

df.index = df.index.droplevel(0)

结果:

            0         1         2         3
one -0.424972  0.567020  0.276232 -1.087401
one  0.404705  0.577046 -1.715002 -1.039268
one  1.075770 -0.109050  1.643563 -1.469388
one -1.294524  0.413738  0.276662 -0.472035

关于python - 如何访问 Pandas 数据框中的多级索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594197/

相关文章:

python - 将记忆化应用于硬币兑换问题

python - Pandas 数据帧 : Extract numerical values (including decimals) from string

python - 将 DF 转换为嵌套列表

python - 按年月分组并在 Python 中查找前 N 个最小值列

python - 分发、epydoc 和 setup.py

当程序执行卡在 self._sslobj.do_handshake() 时,Python 守护进程自动结束

python - 实时数据监视器 : PyQtGraph

python - 如何在没有警告的情况下在 python pandas 中为数据框设置特定值?

python - 如何从可能的字符串列表中替换 python 中的字符串

python - 双索引 python pandas