开发手册 欢迎您!
软件开发者资料库

Python pandas.DataFrame.reset_index函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.reset_index方法的使用。

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

重置索引或索引的一个级别。

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

参数:

level : int, str, tuple, 或list, 默认为None

只从索引中删除给定的级别。默认移除所有级别。

drop : bool, 默认为False

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

inplace : bool, 默认为False

适当地修改DataFrame(不要创建新对象)。

col_level : intstr, 默认为 0

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

col_fill : object, default ‘’

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

返回值:

DataFrameNone

53/5000

带有新索引的DataFrame,如果inplace=True,则None

例子,

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_speedfalcon    bird      389.0parrot    bird       24.0lion    mammal       80.5monkey  mammal        NaN

重置索引时,会将旧索引添加为列,并使用新的顺序索引:

>>> df.reset_index()    index   class  max_speed0  falcon    bird      389.01  parrot    bird       24.02    lion  mammal       80.53  monkey  mammal        NaN

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

>>> df.reset_index(drop=True)    class  max_speed0    bird      389.01    bird       24.02  mammal       80.53  mammal        NaN

您也可以将reset_index与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    typeclass  namebird   falcon  389.0     fly       parrot   24.0     flymammal lion     80.5     run       monkey    NaN    jump

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

>>> df.reset_index(level='class')         class  speed species                  max    typenamefalcon    bird  389.0     flyparrot    bird   24.0     flylion    mammal   80.5     runmonkey  mammal    NaN    jump

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

>>> df.reset_index(level='class', col_level=1)                speed species         class    max    typenamefalcon    bird  389.0     flyparrot    bird   24.0     flylion    mammal   80.5     runmonkey  mammal    NaN    jump

当索引插入到另一个级别下时,我们可以使用参数col_fill指定在哪个级别下:

>>> df.reset_index(level='class', col_level=1, col_fill='species')              species  speed species                class    max    typenamefalcon           bird  389.0     flyparrot           bird   24.0     flylion           mammal   80.5     runmonkey         mammal    NaN    jump

如果我们为col_fill指定了不存在的级别,则会创建该级别:

>>> df.reset_index(level='class', col_level=1, col_fill='genus')                genus  speed species                class    max    typenamefalcon           bird  389.0     flyparrot           bird   24.0     flylion           mammal   80.5     runmonkey         mammal    NaN    jump