pandas.DataFrame.reset_index#
- DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill='', allow_duplicates=<no_default>, names=None)[source]#
重置索引或其某个级别。
重置 DataFrame 的索引,并使用默认索引。如果 DataFrame 具有 MultiIndex,此方法可以删除一个或多个级别。
- 参数:
- levelint, str, tuple, or list, default None
仅删除索引中的给定级别。默认删除所有级别。
- dropbool, default False
不要尝试将索引插入 DataFrame 列。这将重置索引为默认整数索引。
- inplacebool, default False
是否修改 DataFrame 而不是创建新 DataFrame。
- col_levelint or str, default 0
如果列具有多个级别,则确定标签插入到哪个级别。默认情况下,它被插入到第一个级别。
- col_fillobject, default ‘’
如果列具有多个级别,则确定其他级别如何命名。如果为 None,则重复索引名称。
- allow_duplicatesbool, optional, default lib.no_default
允许创建重复的列标签。
- namesint, str or 1-dimensional list, default None
使用给定的字符串重命名包含索引数据的 DataFrame 列。如果 DataFrame 具有 MultiIndex,则这必须是一个长度等于级别数的列表。
- 返回:
- DataFrame 或 None
具有新索引的 DataFrame,如果
inplace=True则为 None。
另请参阅
DataFrame.set_indexreset_index() 的反向操作。
DataFrame.reindex更改为新索引或扩展索引。
DataFrame.reindex_like更改为与其他 DataFrame 相同的索引。
示例
>>> 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
您也可以使用 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 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