mars.dataframe.DataFrame.reset_index#

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

重置索引或其某一层级。

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

Parameters
  • 级别 (int, str, tuple, 或 list, 默认值 None) – 仅从索引中移除给定的级别。默认情况下移除所有级别。

  • drop (bool, default False) – 不尝试将索引插入数据框列。这将索引重置为默认的整数索引。

  • inplace (bool, 默认值为 False) – 直接修改 DataFrame(不创建新对象)。

  • col_level (intstr, 默认值 0) – 如果列具有多个级别,则确定标签插入到哪个级别。默认情况下,它被插入到第一个级别。

  • col_fill (object, default '') – 如果列具有多个级别,决定其他级别的命名。如果为 None,则索引名称会重复。

  • incremental_index (bool, 默认值为 False) – 确保 RangeIndex 是递增的,当输出的 DataFrame 有多个块时,确保索引递增会消耗更多计算,因此默认情况下,每个块的索引将从 0 开始,设置 incremental_index=True,reset_index 将保证输出的 DataFrame 的索引从 0 到 n - 1。

Returns

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

Return type

DataFrame 或 无

另请参阅

DataFrame.set_index

与reset_index相反。

DataFrame.reindex

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

DataFrame.reindex_like

更改为与其他DataFrame相同的索引。

示例

>>> import mars.tensor as mt
>>> import mars.dataframe as md
>>> df = md.DataFrame([('bird', 389.0),
...                    ('bird', 24.0),
...                    ('mammal', 80.5),
...                    ('mammal', mt.nan)],
...                   index=['falcon', 'parrot', 'lion', 'monkey'],
...                   columns=('class', 'max_speed'))
>>> df.execute()
         class  max_speed
falcon    bird      389.0
parrot    bird       24.0
lion    mammal       80.5
monkey  mammal        NaN

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

>>> df.reset_index().execute()
    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).execute()
    class  max_speed
0    bird      389.0
1    bird       24.0
2  mammal       80.5
3  mammal        NaN

您也可以将 reset_indexMultiIndex 一起使用。

>>> import pandas as pd
>>> 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 = md.DataFrame([(389.0, 'fly'),
...                    ( 24.0, 'fly'),
...                    ( 80.5, 'run'),
...                    (mt.nan, 'jump')],
...                   index=index,
...                   columns=columns)
>>> df.execute()
               speed species
                 max    type
class  name
bird   falcon  389.0     fly
       parrot   24.0     fly
mammal lion     80.5     run
       monkey    NaN    jump

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

>>> df.reset_index(level='class').execute()
         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).execute()
                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').execute()
              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').execute()
                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