# pandas.DataFrame.reset_index

`DataFrame.``reset_index`(level=None, drop=False, inplace=False, col_level=0, col_fill='')

  For DataFrame with multi-level index, return new DataFrame with labeling information in the columns under the index names, defaulting to ‘level_0’, ‘level_1’, etc. if any are None. For a standard index, the index name will be used (if set), otherwise a default ‘index’ or ‘level_0’ (if ‘index’ is already taken) will be used.

  Parameters:

  level : int, str, tuple, or list, default None

  > Only remove the given levels from the index. Removes all levels by default

  drop : boolean, default False

  > Do not try to insert index into dataframe columns. This resets the index to the default integer index.

  inplace : boolean, default False

  > Modify the DataFrame in place (do not create a new object)

  col_level : int or str, default 0

  > If the columns have multiple levels, determines which level the labels are inserted into. By default it is inserted into the first level.

  col_fill : object, default ‘’

  > If the columns have multiple levels, determines how the other levels are named. If None then the index name is repeated.

  Returns: | resetted : DataFrame

  Examples

      >>> df = pd.DataFrame([('bird',    389.0),
      ...                    ('bird',     24.0),
      ...                    ('mammal',   80.5),
      ...                    ('mammal', np.nan)],
      ...                   index=['falcon', 'parrot', 'lion', 'monkey'],
      ...                   columns=('class', 'max_speed'))
      >>> df
               class  max_speed
      falcon    bird      389.0
      parrot    bird       24.0
      lion    mammal       80.5
      monkey  mammal        NaN

  When we reset the index, the old index is added as a column, and a new sequential index is used:

      >>> df.reset_index()
          index   class  max_speed
      0  falcon    bird      389.0
      1  parrot    bird       24.0
      2    lion  mammal       80.5
      3  monkey  mammal        NaN

  We can use the drop parameter to avoid the old index being added as a column:

      >>> df.reset_index(drop=True)
          class  max_speed
      0    bird      389.0
      1    bird       24.0
      2  mammal       80.5
      3  mammal        NaN

  You can also use reset_index with MultiIndex.

      >>> index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
      ...                                    ('bird', 'parrot'),
      ...                                    ('mammal', 'lion'),
      ...                                    ('mammal', 'monkey')],
      ...                                   names=['class', 'name'])
      >>> columns = pd.MultiIndex.from_tuples([('speed', 'max'),
      ...                                      ('species', 'type')])
      >>> df = pd.DataFrame([(389.0, 'fly'),
      ...                    ( 24.0, 'fly'),
      ...                    ( 80.5, 'run'),
      ...                    (np.nan, 'jump')],
      ...                   index=index,
      ...                   columns=columns)
      >>> df
                     speed species
                       max    type
      class  name
      bird   falcon  389.0     fly
             parrot   24.0     fly
      mammal lion     80.5     run
             monkey    NaN    jump

  If the index has multiple levels, we can reset a subset of them:

      >>> df.reset_index(level='class')
               class  speed species
                        max    type
      name
      falcon    bird  389.0     fly
      parrot    bird   24.0     fly
      lion    mammal   80.5     run
      monkey  mammal    NaN    jump

  If we are not dropping the index, by default, it is placed in the top level. We can place it in another level:

      >>> df.reset_index(level='class', col_level=1)
                      speed species
               class    max    type
      name
      falcon    bird  389.0     fly
      parrot    bird   24.0     fly
      lion    mammal   80.5     run
      monkey  mammal    NaN    jump

  When the index is inserted under another level, we can specify under which one with the parameter col_fill:

      >>> df.reset_index(level='class', col_level=1, col_fill='species')
                    species  speed species
                      class    max    type
      name
      falcon           bird  389.0     fly
      parrot           bird   24.0     fly
      lion           mammal   80.5     run
      monkey         mammal    NaN    jump

  If we specify a nonexistent level for col_fill, it is created:

      >>> df.reset_index(level='class', col_level=1, col_fill='genus')
                      genus  speed species
                      class    max    type
      name
      falcon           bird  389.0     fly
      parrot           bird   24.0     fly
      lion           mammal   80.5     run
      monkey         mammal    NaN    jump

Scroll To Top