Python 多索引中的标签输出

Python 多索引中的标签输出,python,pandas,Python,Pandas,我正在以下位置阅读有关多索引/高级索引的信息 我的问题是如何解释标签输出?以及如何从给定的输入中生成此输出。级别都是多索引的唯一值。 标签映射此级别 因此,对于第一级['bar',baz',foo',qux']由标签[0,0,1,1,2,2,3,3]中定义的位置映射,输出为['bar',bar',baz',baz',foo',foo',qux',qux']。它以同样的方式适用于所有级别 如果可以进行检查,则不使用某些级别,但所有可能的值都存在于级别中 因此: 对于删除,可以使用0.20.0版中

我正在以下位置阅读有关多索引/高级索引的信息


我的问题是如何解释标签输出?以及如何从给定的输入中生成此输出。

级别都是
多索引的唯一值。
标签
映射此级别

因此,对于第一级
['bar',baz',foo',qux']
由标签
[0,0,1,1,2,2,3,3]
中定义的位置映射,输出为
['bar',bar',baz',baz',foo',foo',qux',qux']
。它以同样的方式适用于所有级别

如果可以进行检查,则不使用某些级别,但所有可能的值都存在于
级别中

因此:

对于删除,可以使用0.20.0版中的新版本:


标签
是一个列表列表,其中每个子列表的长度必须相同。这是因为每个子列表的长度与索引本身的长度相同。每个子列表的每个成员都是相应的
级别
子列表的位置

index.levels[0][index.labels[0]]

Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')
因此,此
pd.MultiIndex
的第一个元素将由每个
标签
子列表的第一个元素确定

index.levels[0][index.labels[0]]

Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')
第一个子列表的第一个元素是
0
,对应于
“bar”
。第二个子列表的第一个元素是
0
,对应于
'one'
。这意味着索引的第一个元素是
('bar','one')

当我们看到可以使用
标签
子列表对
级别
子列表进行切片时,这一点变得更加明显

index.levels[0][index.labels[0]]

Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')

我们可以把它们拉到一起,创造出我们所期望的

list(zip(index.levels[0][index.labels[0]], index.levels[1][index.labels[1]]))

[('bar', 'one'),
 ('bar', 'two'),
 ('baz', 'one'),
 ('baz', 'two'),
 ('foo', 'one'),
 ('foo', 'two'),
 ('qux', 'one'),
 ('qux', 'two')]
index.levels[1][index.labels[1]]

Index(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'], dtype='object', name='second')
list(zip(index.levels[0][index.labels[0]], index.levels[1][index.labels[1]]))

[('bar', 'one'),
 ('bar', 'two'),
 ('baz', 'one'),
 ('baz', 'two'),
 ('foo', 'one'),
 ('foo', 'two'),
 ('qux', 'one'),
 ('qux', 'two')]