当前位置: 首页 > web >正文

【Pandas】pandas DataFrame reset_index

Pandas2.2 DataFrame

Reindexing selection label manipulation

方法描述
DataFrame.add_prefix(prefix[, axis])用于在 DataFrame 的行标签或列标签前添加指定前缀的方法
DataFrame.add_suffix(suffix[, axis])用于在 DataFrame 的行标签或列标签后添加指定后缀的方法
DataFrame.align(other[, join, axis, level, …])用于对齐两个 DataFrameSeries 的方法
DataFrame.at_time(time[, asof, axis])用于筛选 特定时间点 的行的方法
DataFrame.between_time(start_time, end_time)用于筛选 指定时间范围内的数据行 的方法
DataFrame.drop([labels, axis, index, …])用于从 DataFrame 中删除指定行或列的方法
DataFrame.drop_duplicates([subset, keep, …])用于删除重复行的方法
DataFrame.duplicated([subset, keep])用于检测 重复行 的方法
DataFrame.equals(other)用于比较两个 DataFrame 是否完全相等的方法
DataFrame.filter([items, like, regex, axis])用于筛选列或行标签的方法
DataFrame.first(offset)用于选取 时间序列型 DataFrame 中从起始时间开始的一段连续时间窗口 的方法
DataFrame.head([n])用于快速查看 DataFrame 前几行数据 的方法
DataFrame.idxmax([axis, skipna, numeric_only])用于查找 每列或每行中最大值的索引标签 的方法
DataFrame.idxmin([axis, skipna, numeric_only])用于查找 每列或每行中最小值的索引标签 的方法
DataFrame.last(offset)用于选取 时间序列型 DataFrame 中从最后时间点开始向前截取一段指定长度的时间窗口 的方法
DataFrame.reindex([labels, index, columns, …])用于重新索引 DataFrame 的核心方法
DataFrame.reindex_like(other[, method, …])用于将当前 DataFrame 的索引和列重新设置为与另一个对象(如另一个 DataFrame 或 Series)相同
DataFrame.rename([mapper, index, columns, …])用于重命名 DataFrame 的行索引标签或列名的方法
DataFrame.rename_axis([mapper, index, …])用于**重命名 DataFrame 的索引轴名称(index axis name)或列轴名称(column axis name)**的方法
DataFrame.reset_index([level, drop, …])用于将 DataFrame 的索引(index)重置为默认整数索引,并将原索引作为列添加回 DataFrame 中的方法

pandas.DataFrame.reset_index()

pandas.DataFrame.reset_index() 是一个用于将 DataFrame 的索引(index)重置为默认整数索引,并将原索引作为列添加回 DataFrame 中的方法。它常用于处理具有自定义索引的 DataFrame,使其恢复为标准的从 0 开始的整数索引。


📌 方法签名
DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill='', allow_duplicates=<no_default>, names=None)

🔧 参数说明
参数类型说明
levelint、str 或 list,默认 None指定要重置的索引层级(适用于 MultiIndex)
dropbool,默认 False是否丢弃原索引而不将其作为列加入结果中
inplacebool,默认 False是否在原对象上修改
col_levelint 或 str,默认 0在多级列的情况下,指定新索引列插入到哪一级
col_fillstr,默认 ‘’在多级列时,用于填充未使用的层级名称
namesstr 或 list,默认 None设置新列的名称(如果原索引有名称则自动使用)
allow_duplicatesbool,默认 False是否允许列名重复(仅在设置 names 时有效)

✅ 返回值
  • 返回一个新的 DataFrame,其索引被重置为从 0 开始的整数索引;
  • drop=True,则原始索引不会作为列保留;
  • inplace=True,则直接修改原对象并返回 None

🧪 示例代码及结果
示例 1:基本用法 - 重置普通索引
import pandas as pddf = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
}, index=['x', 'y', 'z'])print("Original DataFrame:")
print(df)# 重置索引
df_reset = df.reset_index()print("\nAfter reset_index():")
print(df_reset)
输出结果:
Original DataFrame:A  B
x  1  4
y  2  5
z  3  6After reset_index():index  A  B
0     x  1  4
1     y  2  5
2     z  3  6

原索引 'x', 'y', 'z' 被转换为一列名为 'index' 的列。


示例 2:不保留原索引(drop=True)
df_reset_drop = df.reset_index(drop=True)
print("\nAfter reset_index(drop=True):")
print(df_reset_drop)
输出结果:
After reset_index(drop=True):A  B
0  1  4
1  2  5
2  3  6

原索引被完全丢弃,不再作为列出现。


示例 3:自定义新列名(names 参数)
df_reset_named = df.reset_index(names='old_index')
print("\nAfter reset_index(names='old_index'):")
print(df_reset_named)
输出结果:
After reset_index(names='old_index'):old_index  A  B
0         x  1  4
1         y  2  5
2         z  3  6

使用 names 自定义了原索引列的列名。


示例 4:多级索引重置(MultiIndex)
# 创建多级索引 DataFrame
index = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1)], names=['group', 'id'])
df_multi = pd.DataFrame({'value': [10, 20, 30]}, index=index)print("Original MultiIndex DataFrame:")
print(df_multi)# 重置所有索引
df_reset_multi = df_multi.reset_index()
print("\nAfter reset_index() on MultiIndex:")
print(df_reset_multi)
输出结果:
Original MultiIndex DataFrame:value
group id          
a     1           102           20
b     1           30After reset_index() on MultiIndex:group  id  value
0     a     1     10
1     a     2     20
2     b     1     30

多级索引被展开为多个列。


示例 5:只重置某一层索引(level 参数)
# 只重置第一层索引(group)
df_reset_level = df_multi.reset_index(level='group')
print("\nAfter reset_index(level='group'):")
print(df_reset_level)
输出结果:
After reset_index(level='group'):group  value
id             
1      a     10
2      a     20
1      b     30

只重置了 'group' 层,保留 'id' 作为索引。


示例 6:重置索引并重命名列名(names + level)
# 重置所有索引并命名新列
df_reset_names = df_multi.reset_index(names=['category', 'identifier'])
print("\nAfter reset_index(names=['category', 'identifier']):")
print(df_reset_names)
输出结果:
After reset_index(names=['category', 'identifier']):category  identifier  value
0         a           1     10
1         a           2     20
2         b           1     30

使用 names 给多级索引列分别命名。


示例 7:与 drop=True 结合使用
# 重置索引但不保留原索引列
df_reset_drop = df.reset_index(drop=True)
print("\nAfter reset_index(drop=True):")
print(df_reset_drop)
输出结果:
After reset_index(drop=True):A  B
0  1  4
1  2  5
2  3  6

🧠 应用场景
  • 数据清洗:将非连续或非数字索引转换为标准整数索引;
  • 模型输入准备:确保索引是标准整数,便于后续处理;
  • 导出数据前处理:避免索引丢失或无法写入文件;
  • 合并多个 DataFrame:统一索引结构;
  • 可视化和展示:标准化输出格式,方便查看和分析。

⚠️ 注意事项
  • 默认会将原索引作为列加入新的 DataFrame
  • 如果是 MultiIndex,可以控制只重置某一层;
  • 使用 drop=True 可避免新增索引列;
  • 支持通过 names 自定义列名;
  • 不会修改原始数据内容,除非设置 inplace=True
  • 对于大型数据集非常安全且高效,适合链式调用。
http://www.xdnf.cn/news/11941.html

相关文章:

  • HTTP常见的请求方法、响应状态码、接口规范介绍
  • c#开发AI模型对话
  • 回归任务和分类任务损失函数详解
  • 性能剖析:在 ABP 框架中集成 MiniProfiler 实现性能可视化诊断
  • 学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
  • 以人类演示视频为提示,学习可泛化的机器人策略
  • 鸿蒙仓颉语言开发实战教程:商城登录页
  • [网页五子棋][匹配模块]实现胜负判定,处理玩家掉线
  • 【C++】std::wstring` 和 C# 的 `String`(全称 `System.String`)
  • HRI-2025 | 大模型驱动的个性化可解释机器人人机交互研究
  • .Net Framework 4/C# 面向对象编程进阶
  • 机器学习基础(四) 决策树
  • Spitfire:Codigger 生态中的高性能、安全、分布式浏览器
  • Java 线程池原理详解
  • Rust 学习笔记:Box<T>
  • 更新 Docker 容器中的某一个文件
  • 根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
  • ffmpeg(三):处理原始数据命令
  • 旅游微信小程序制作指南
  • Webpack常见的插件和模式
  • IOS 打包账号发布上传和IOS Xcode证书配置
  • .Net Framework 4/C# 属性和方法
  • VS代码生成工具ReSharper v2025.1——支持.NET 10和C# 14预览功能
  • 【设计模式-4.9】行为型——命令模式
  • 解决Required request part ‘file‘ is not present
  • StarRocks与Apache Iceberg:构建高效湖仓一体的实时分析平台
  • OPENCV重点结构体Mat的讲解
  • 数据结构 [一] 基本概念
  • 第二章 2.2 数据存储安全风险之数据存储风险分析
  • 0. MySQL在Centos 7环境安装