pandas.MultiIndex.remove_unused_levels#

MultiIndex.remove_unused_levels()[源码]#

从当前 MultiIndex 创建新的 MultiIndex,以删除未使用的级别。

未使用级别意味着在标签中未出现的级别。由此产生的 MultiIndex 将具有相同的外部外观,即相同的 .values 和顺序。它也将与原始的 .equals()。

remove_unused_levels 方法在您拥有具有分层级别的 MultiIndex 的情况下非常有用,但其中一些级别由于过滤或子集操作而不再需要。通过删除未使用的级别,生成的 MultiIndex 将变得更紧凑、更高效,这可以提高后续操作的性能。

返回:
MultiIndex

已删除未使用级别的新的 MultiIndex。

另请参阅

MultiIndex.droplevel

从 MultiIndex 中删除指定的级别。

MultiIndex.reorder_levels

重新排列 MultiIndex 的级别。

MultiIndex.set_levels

在 MultiIndex 上设置新级别。

示例

>>> mi = pd.MultiIndex.from_product([range(2), list("ab")])
>>> mi
MultiIndex([(0, 'a'),
            (0, 'b'),
            (1, 'a'),
            (1, 'b')],
           )
>>> mi[2:]
MultiIndex([(1, 'a'),
            (1, 'b')],
           )

第一个级别的 0 未被表示,可以删除

>>> mi2 = mi[2:].remove_unused_levels()
>>> mi2.levels
FrozenList([[1], ['a', 'b']])