Index.rename(name, inplace=False)#

Alter Index or MultiIndex name.

Able to set new names without level. Defaults to returning new index. Length of names must match number of levels in MultiIndex.

  • name (label or list of labels) – Name(s) to set.

  • inplace (bool, default False) – Modifies the object directly, instead of creating a new Index or MultiIndex.


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

Return type

Index or None

See also


Able to set new names partially and by level.


>>> idx = pd.Index(['A', 'C', 'A', 'B'], name='score')  
>>> idx.rename('grade')  
Index(['A', 'C', 'A', 'B'], dtype='object', name='grade')
>>> idx = pd.MultiIndex.from_product([['python', 'cobra'],  
...                                   [2018, 2019]],
...                                   names=['kind', 'year'])
>>> idx  
MultiIndex([('python', 2018),
            ('python', 2019),
            ( 'cobra', 2018),
            ( 'cobra', 2019)],
           names=['kind', 'year'])
>>> idx.rename(['species', 'year'])  
MultiIndex([('python', 2018),
            ('python', 2019),
            ( 'cobra', 2018),
            ( 'cobra', 2019)],
           names=['species', 'year'])
>>> idx.rename('species')  
Traceback (most recent call last):
TypeError: Must pass list-like as `names`.

This docstring was copied from pandas.core.indexes.base.Index.