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