pandas.DataFrame.reset_index#

DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill='', allow_duplicates=_NoDefault.no_default, names=None)[源代码]#

重置索引或其某个级别。

重置 DataFrame 的索引,并使用默认索引。如果 DataFrame 具有 MultiIndex,则此方法可以删除一个或多个级别。

Parameters:
levelint、str、tuple 或 list,默认为 None

仅删除索引中的指定级别。默认情况下删除所有级别。

dropbool,默认 False

不要尝试将索引插入 DataFrame 列。这会将索引重置为默认的整数索引。

inplacebool,默认 False

是修改 DataFrame 还是创建新的 DataFrame。

col_levelint 或 str,默认为 0

如果列具有多个级别,则确定标签插入到哪个级别。默认情况下,它插入到第一个级别。

col_fillobject,默认为 ‘’

如果列具有多个级别,则确定其他级别的命名方式。如果为 None,则重复索引名称。

allow_duplicatesbool, optional, default lib.no_default

允许创建重复的列标签。

在 1.5.0 版本加入.

namesint、str 或一维列表,默认为 None

使用给定的字符串,重命名包含索引数据的 DataFrame 列。如果 DataFrame 具有 MultiIndex,则必须是长度等于级别数的列表或元组。

在 1.5.0 版本加入.

Returns:
DataFrame 或 None

具有新索引的 DataFrame,如果 inplace=True 则为 None。

参见

DataFrame.set_index

reset_index 的反向操作。

DataFrame.reindex

更改为新索引或扩展索引。

DataFrame.reindex_like

将此对象更改为与另一个 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

当我们重置索引时,旧索引被添加为一列,并使用新的顺序索引:

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

我们可以使用 drop 参数来避免将旧索引添加为列:

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

您也可以在 MultiIndex 上使用 reset_index

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

使用 names 参数,为索引列选择一个名称:

>>> df.reset_index(names=['classes', 'names'])
  classes   names  speed species
                     max    type
0    bird  falcon  389.0     fly
1    bird  parrot   24.0     fly
2  mammal    lion   80.5     run
3  mammal  monkey    NaN    jump

如果索引具有多个级别,我们可以重置其中的一部分:

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

如果我们在不删除索引的情况下将其删除,则默认情况下,它被放置在顶层。我们可以将其放置在另一个级别:

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

当索引被插入到另一个级别之下时,我们可以使用 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

如果为 col_fill 指定一个不存在的级别,则会创建它:

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