Skip to main content
`Ctrl`+`K`

# pandas.Index.set_names

Index.set_names(names, *, level=None, inplace=False)

  Set Index or MultiIndex name.

  Able to set new names partially and by level.

  Parameters:
    nameslabel or list of label or dict-like for MultiIndex

      Name(s) to set.

      Changed in version 1.3.0.

    levelint, label or list of int or label, optional

      If the index is a MultiIndex and names is not dict-like, level(s) to set (None for all levels). Otherwise level must be None.

      Changed in version 1.3.0.

    inplacebool, default False

      Modifies the object directly, instead of creating a new Index or MultiIndex.

  Returns:
    Index or None

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

  See also

  `Index.rename`

    Able to set new names without level.

  Examples

      >>> idx = pd.Index([1, 2, 3, 4])
      >>> idx
      Index([1, 2, 3, 4], dtype='int64')
      >>> idx.set_names('quarter')
      Index([1, 2, 3, 4], dtype='int64', name='quarter')

      >>> idx = pd.MultiIndex.from_product([['python', 'cobra'],
      ...                                   [2018, 2019]])
      >>> idx
      MultiIndex([('python', 2018),
                  ('python', 2019),
                  ( 'cobra', 2018),
                  ( 'cobra', 2019)],
                 )
      >>> idx = idx.set_names(['kind', 'year'])
      >>> idx.set_names('species', level=0)
      MultiIndex([('python', 2018),
                  ('python', 2019),
                  ( 'cobra', 2018),
                  ( 'cobra', 2019)],
                 names=['species', 'year'])

  When renaming levels with a dict, levels can not be passed.

      >>> idx.set_names({'kind': 'snake'})
      MultiIndex([('python', 2018),
                  ('python', 2019),
                  ( 'cobra', 2018),
                  ( 'cobra', 2019)],
                 names=['snake', 'year'])