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

【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
  • 对于大型数据集非常安全且高效,适合链式调用。

相关文章:

  • 关于udp——mqtt运行注意事项
  • js鼠标事件大全
  • 6.4 计算机网络面试题
  • 每日算法刷题Day22 6.4:leetcode二分答案3道题,用时1h30min
  • 华为云Flexus+DeepSeek征文|实战体验云服务器单机部署和CCE高可用的架构AI赋能
  • 硬件学习笔记--66 MCU的DMA简介
  • macOS 上使用 Homebrew 安装redis-cli
  • 力扣面试150题--岛屿数量
  • K8S主机漏洞扫描时检测到kube-服务目标SSL证书已过期漏洞的一种永久性修复方法
  • 机器学习基础相关问题
  • C++ 变量二
  • Linux操作系统shell脚本
  • 论文导读 | 区间数据管理
  • 如何能推进专业度比较高的项目?
  • 深入详解开源工具DCMTK:C++开发的DICOM工具包
  • 相机--相机标定实操
  • Java 中创建线程主要有三种方式
  • 洛谷 单源最短路径 Dijkstra算法+优先队列
  • 华为云Flexus+DeepSeek征文|Flexus云服务器单机部署+CCE容器高可用部署快速搭建生产级的生成式AI应用
  • 如何通过RL真正提升大模型的推理能力?NVIDIA提出长期强化学习训练框架ProRL
  • 网站做镜像的有什么用/百中搜优化
  • 建设网站需要注意什么问题/长春百度推广公司
  • 网站用哪些系统做的好处/网站建设开发公司
  • 网站后台管理系统下载/外包接单平台
  • 发稿类别是什么/sem和seo是什么职业
  • 自媒体网站大全/网络广告发布