pandas.Index.rename#

Index.rename(name, *, inplace=False)[source]#

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.

Parameters:
namelabel or list of labels

Name(s) to set.

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.set_names

Able to set new names partially and by level.

Examples

>>> 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`.