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')]