Series.reset_index(level=None, drop=False, name=_NoDefault.no_default, inplace=False, incremental_index=False)#

Generate a new DataFrame or Series with the index reset.

This is useful when the index needs to be treated as a column, or when the index is meaningless and needs to be reset to the default before another operation.

  • level (int, str, tuple, or list, default optional) – For a Series with a MultiIndex, only remove the specified levels from the index. Removes all levels by default.

  • drop (bool, default False) – Just reset the index, without inserting it as a column in the new DataFrame.

  • name (object, optional) – The name to use for the column containing the original Series values. Uses self.name by default. This argument is ignored when drop is True.

  • inplace (bool, default False) – Modify the Series in place (do not create a new object).

  • allow_duplicates (bool, default False (Not supported yet)) –

    Allow duplicate column labels to be created.

    New in version 1.5.0(pandas).


When drop is False (the default), a DataFrame is returned. The newly created columns will come first in the DataFrame, followed by the original Series values. When drop is True, a Series is returned. In either case, if inplace=True, no value is returned.

Return type

Series or DataFrame or None

See also


Analogous function for DataFrame.


>>> s = pd.Series([1, 2, 3, 4], name='foo',  
...               index=pd.Index(['a', 'b', 'c', 'd'], name='idx'))

Generate a DataFrame with default index.

>>> s.reset_index()  
  idx  foo
0   a    1
1   b    2
2   c    3
3   d    4

To specify the name of the new column use name.

>>> s.reset_index(name='values')  
  idx  values
0   a       1
1   b       2
2   c       3
3   d       4

To generate a new Series with the default set drop to True.

>>> s.reset_index(drop=True)  
0    1
1    2
2    3
3    4
Name: foo, dtype: int64

The level parameter is interesting for Series with a multi-level index.

>>> arrays = [np.array(['bar', 'bar', 'baz', 'baz']),  
...           np.array(['one', 'two', 'one', 'two'])]
>>> s2 = pd.Series(  
...     range(4), name='foo',
...     index=pd.MultiIndex.from_arrays(arrays,
...                                     names=['a', 'b']))

To remove a specific level from the Index, use level.

>>> s2.reset_index(level='a')  
       a  foo
one  bar    0
two  bar    1
one  baz    2
two  baz    3

If level is not set, all levels are removed from the Index.

>>> s2.reset_index()  
     a    b  foo
0  bar  one    0
1  bar  two    1
2  baz  one    2
3  baz  two    3
incremental_index: bool, default False

Ensure RangeIndex incremental, when output Series has multiple chunks, ensuring index incremental costs more computation, so by default, each chunk will have index which starts from 0, setting incremental_index=True,reset_index will guarantee that output Series’s index is from 0 to n - 1.

This docstring was copied from pandas.core.series.Series.