pandas.DataFrame.reset_index#
- DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill='', allow_duplicates=<no_default>, names=None)[源代码][源代码]#
重置索引,或重置其一个级别。
重置 DataFrame 的索引,并使用默认索引代替。如果 DataFrame 具有 MultiIndex,此方法可以删除一个或多个级别。
- 参数:
- 级别int, str, tuple 或 list, 默认 None
仅从索引中移除给定的级别。默认情况下会移除所有级别。
- 丢弃bool, 默认 False
不要尝试将索引插入到数据框列中。这会将索引重置为默认的整数索引。
- 就地bool, 默认 False
是否修改 DataFrame 而不是创建一个新的。
- col_levelint 或 str, 默认值 0
如果列有多个级别,确定标签插入到哪个级别。默认情况下,它插入到第一个级别。
- col_fill对象, 默认 ‘’
如果列有多个级别,确定其他级别的命名方式。如果为 None,则重复索引名称。
- allow_duplicatesbool, 可选, 默认 lib.no_default
允许创建重复的列标签。
Added in version 1.5.0.
- 名称int, str 或 1 维列表,默认 None
使用给定的字符串,重命名包含索引数据的 DataFrame 列。如果 DataFrame 具有 MultiIndex,这必须是一个长度等于级别数的列表。
Added in version 1.5.0.
- 返回:
- DataFrame 或 None
带有新索引的 DataFrame 或如果
inplace=True
则为 None。
参见
DataFrame.set_index
与 reset_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
你也可以在 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