Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.rename_axis

DataFrame.rename_axis(mapper=<no_default>, *, index=<no_default>, columns=<no_default>, axis=0, copy=None, inplace=False)

  Set the name of the axis for the index or columns.

  Parameters:
    mapper scalar, list-like, optional

      Value to set the axis name attribute.

    index, columns scalar, list-like, dict-like or function, optional

      A scalar, list-like, dict-like or functions transformations to apply to that axis’ values. Note that the `columns` parameter is not allowed if the object is a Series. This parameter only apply for DataFrame type objects.

      Use either `mapper` and `axis` to specify the axis to target with `mapper`, or `index` and/or `columns`.

    axis{0 or ‘index’, 1 or ‘columns’}, default 0

      The axis to rename. For Series this parameter is unused and defaults to 0.

    copy bool, default None

      Also copy underlying data.

      Note

      The copy keyword will change behavior in pandas 3.0. Copy-on-Write will be enabled by default, which means that all methods with a copy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.

      You can already get the future behavior and improvements through enabling copy on write `pd.options.mode.copy_on_write = True`

    inplace bool, default False

      Modifies the object directly, instead of creating a new Series or DataFrame.

  Returns:
    Series, DataFrame, or None

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

  See also

  `Series.rename`

    Alter Series index labels or name.

  `DataFrame.rename`

    Alter DataFrame index labels or name.

  `Index.rename`

    Set new names on index.

  Notes

  `DataFrame.rename_axis` supports two calling conventions

  - `(index=index_mapper, columns=columns_mapper, ...)`

  - `(mapper, axis={'index', 'columns'}, ...)`

  The first calling convention will only modify the names of the index and/or the names of the Index object that is the columns. In this case, the parameter `copy` is ignored.

  The second calling convention will modify the names of the corresponding index if mapper is a list or a scalar. However, if mapper is dict-like or a function, it will use the deprecated behavior of modifying the axis labels.

  We highly recommend using keyword arguments to clarify your intent.

  Examples

  Series

      >>> s = pd.Series(["dog", "cat", "monkey"])
      >>> s
      0       dog
      1       cat
      2    monkey
      dtype: object
      >>> s.rename_axis("animal")
      animal
      0    dog
      1    cat
      2    monkey
      dtype: object

  DataFrame

      >>> df = pd.DataFrame({"num_legs": [4, 4, 2],
      ...                    "num_arms": [0, 0, 2]},
      ...                   ["dog", "cat", "monkey"])
      >>> df
              num_legs  num_arms
      dog            4         0
      cat            4         0
      monkey         2         2
      >>> df = df.rename_axis("animal")
      >>> df
              num_legs  num_arms
      animal
      dog            4         0
      cat            4         0
      monkey         2         2
      >>> df = df.rename_axis("limbs", axis="columns")
      >>> df
      limbs   num_legs  num_arms
      animal
      dog            4         0
      cat            4         0
      monkey         2         2

  MultiIndex

      >>> df.index = pd.MultiIndex.from_product([['mammal'],
      ...                                        ['dog', 'cat', 'monkey']],
      ...                                       names=['type', 'name'])
      >>> df
      limbs          num_legs  num_arms
      type   name
      mammal dog            4         0
             cat            4         0
             monkey         2         2

      >>> df.rename_axis(index={'type': 'class'})
      limbs          num_legs  num_arms
      class  name
      mammal dog            4         0
             cat            4         0
             monkey         2         2

      >>> df.rename_axis(columns=str.upper)
      LIMBS          num_legs  num_arms
      type   name
      mammal dog            4         0
             cat            4         0
             monkey         2         2