Skip to main content
`Ctrl`+`K`

# pandas.MultiIndex.set_codes

MultiIndex.set_codes(codes, *, level=None, verify_integrity=True)

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

  The codes map each index entry to its position in the corresponding level array. This method returns a new MultiIndex with the updated codes.

  Parameters:
    codes sequence or list of sequence

      New codes to apply.

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

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

    verify_integrity bool, 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`.

  See also

  `MultiIndex.set_levels`

    Set new levels on MultiIndex.

  `MultiIndex.codes`

    Get the codes of the levels in the MultiIndex.

  `MultiIndex.levels`

    Get the levels of the MultiIndex.

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