pandas.MultiIndex.set_levels#
- MultiIndex.set_levels(levels, *, level=None, verify_integrity=True)[源代码][源代码]#
在 MultiIndex 上设置新级别。默认为返回新索引。
set_levels 方法提供了一种灵活的方式来更改 MultiIndex 的级别。这在需要更新 DataFrame 的索引结构而不改变数据时特别有用。该方法返回一个新的 MultiIndex,除非操作是就地执行的,确保原始索引在未明确修改的情况下保持不变。
该方法默认检查新层级与现有代码的完整性,但如果你确信你的层级与底层数据一致,可以禁用此检查。当你想执行优化或对索引层级进行特定调整,而这些调整并不严格遵循原始结构时,这会很有用。
- 参数:
- levels序列或序列列表
要应用的新级别。
- 级别int, 级别名称, 或 int/级别名称 的序列 (默认 None)
要设置的级别(所有级别为 None)。
- verify_integrity布尔值, 默认为 True
如果为真,则检查级别和代码是否兼容。
- 返回:
- MultiIndex
更新了层级的新 MultiIndex。
参见
MultiIndex.set_codes
在现有的 MultiIndex 上设置新代码。
MultiIndex.remove_unused_levels
从当前索引创建一个新的 MultiIndex,删除未使用的级别。
Index.set_names
设置索引或复合索引的名称。
例子
>>> idx = pd.MultiIndex.from_tuples( ... [ ... (1, "one"), ... (1, "two"), ... (2, "one"), ... (2, "two"), ... (3, "one"), ... (3, "two"), ... ], ... names=["foo", "bar"], ... ) >>> idx MultiIndex([(1, 'one'), (1, 'two'), (2, 'one'), (2, 'two'), (3, 'one'), (3, 'two')], names=['foo', 'bar'])
>>> idx.set_levels([["a", "b", "c"], [1, 2]]) MultiIndex([('a', 1), ('a', 2), ('b', 1), ('b', 2), ('c', 1), ('c', 2)], names=['foo', 'bar']) >>> idx.set_levels(["a", "b", "c"], level=0) MultiIndex([('a', 'one'), ('a', 'two'), ('b', 'one'), ('b', 'two'), ('c', 'one'), ('c', 'two')], names=['foo', 'bar']) >>> idx.set_levels(["a", "b"], level="bar") MultiIndex([(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')], names=['foo', 'bar'])
如果传递给
set_levels()
的任何级别超过了现有长度,该参数的所有值都将存储在 MultiIndex 级别中,尽管这些值在 MultiIndex 输出中会被截断。>>> idx.set_levels([["a", "b", "c"], [1, 2, 3, 4]], level=[0, 1]) MultiIndex([('a', 1), ('a', 2), ('b', 1), ('b', 2), ('c', 1), ('c', 2)], names=['foo', 'bar']) >>> idx.set_levels([["a", "b", "c"], [1, 2, 3, 4]], level=[0, 1]).levels FrozenList([['a', 'b', 'c'], [1, 2, 3, 4]])