胡说叔叔
设置idx = pd.MultiIndex.from_product([range(2), [*'XY']], names=['lvl0', 'lvl1'])df = pd.DataFrame(1, idx, idx)dflvl0 0 1 lvl1 X Y X Ylvl0 lvl1 0 X 1 1 1 1 Y 1 1 1 11 X 1 1 1 1 Y 1 1 1 1MultiIndex 的基本剖析levels是frozenlist的pandas.Index对象。这些pandas.Index对象中的每一个都应包含唯一值。如果这些级别索引对象不是唯一的,则可能有问题。[*map(type, df.index.levels)][pandas.core.indexes.numeric.Int64Index, pandas.core.indexes.base.Index]你可以得到他们的 dtype[l.dtype for l in df.index.levels][dtype('int64'), dtype('O')]labels这是一个frozenlist数组。每个级别索引都有一个标签数组。相应的标签数组包含对正在显示的级别值的引用。[*map(type, df.index.labels)][pandas.core.indexes.frozen.FrozenNDArray, pandas.core.indexes.frozen.FrozenNDArray]print(*df.index.labels, sep='\n')FrozenNDArray([0, 0, 1, 1], dtype='int8')FrozenNDArray([0, 1, 0, 1], dtype='int8')get_level_values您可以访问索引中的值 get_level_valuesdf.index.get_level_values(1)Index(['X', 'Y', 'X', 'Y'], dtype='object', name='lvl1')这level与用label对象切片对象相同df.index.levels[1][df.index.labels[1]]Index(['X', 'Y', 'X', 'Y'], dtype='object', name='lvl1')