pandas.MultiIndex.set_codes

MultiIndex.set_codes(codes, *, level=None, inplace=None, verify_integrity=True)[source]

Set new codes on MultiIndex. Defaults to returning new index.

Parameters:
codessequence or list of sequence

New codes to apply.

levelint, level name, or sequence of int/level names (default None)

Level(s) to set (None for all levels).

inplacebool

If True, mutates in place.

Deprecated since version 1.2.0.

verify_integritybool, default True

If True, checks that levels and codes are compatible.

Returns:
new index (of same type and class…etc) or None

The same type as the caller or None if inplace=True.

Examples

>>> idx = pd.MultiIndex.from_tuples(
...     [(1, "one"), (1, "two"), (2, "one"), (2, "two")], names=["foo", "bar"]
... )
>>> idx
MultiIndex([(1, 'one'),
    (1, 'two'),
    (2, 'one'),
    (2, 'two')],
   names=['foo', 'bar'])
>>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]])
MultiIndex([(2, 'one'),
            (1, 'one'),
            (2, 'two'),
            (1, 'two')],
           names=['foo', 'bar'])
>>> idx.set_codes([1, 0, 1, 0], level=0)
MultiIndex([(2, 'one'),
            (1, 'two'),
            (2, 'one'),
            (1, 'two')],
           names=['foo', 'bar'])
>>> idx.set_codes([0, 0, 1, 1], level='bar')
MultiIndex([(1, 'one'),
            (1, 'one'),
            (2, 'two'),
            (2, 'two')],
           names=['foo', 'bar'])
>>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]], level=[0, 1])
MultiIndex([(2, 'one'),
            (1, 'one'),
            (2, 'two'),
            (1, 'two')],
           names=['foo', 'bar'])