当前位置: 首页 > 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
  • 对于大型数据集非常安全且高效,适合链式调用。
http://www.lqws.cn/news/123751.html

相关文章:

  • Delphi用if else实现 select case、switch语句功能,实现case 以字符串为分类条件。
  • AI IDE 正式上线!通义灵码开箱即用
  • (T/SAIAS 020-2024)《医疗大模型语料一体机应用指南》深度解读与实施分析
  • echarts使用graph、lines实现拓扑,可以拖动增加effect效果
  • Duix.HeyGem:以“离线+开源”重构数字人创作生态
  • 【运维实战】使用Nvm配置多Node.js环境!
  • Git安装与常用命令全攻略
  • C#编程过程中变量用中文有啥影响?
  • Zookeeper 集群部署与故障转移
  • C#和C++在编译过程中的文件区分
  • 【Web应用】若依框架:基础篇14 源码阅读-后端代码分析-课程管理模块前后端代码分析
  • ubuntu自定义服务自动启动
  • 全志A40i android7.1 调试信息打印串口由uart0改为uart3
  • 在Windows11上安装 Ubuntu WSL
  • Fréchet Inception Distance(FID)
  • es地理信息索引的类型以及geo_point‌和geo_hash的关系
  • 四元数:从理论基础到实际应用的深度探索
  • THUNDER:用“听回去”的方式让数字人说话更像真人
  • 一个小小的 flask app, 几个小工具,拼凑一下
  • BERT:让AI真正“读懂”语言的革命
  • 【Unity】R3 CSharp 响应式编程 - 使用篇(集合)(三)
  • Vue + Element Plus 实战:大文件切片上传 + 断点续传
  • 华为设备OSPF配置与实战指南
  • 【vue3学习】vue3入门
  • MySQL 事务深度解析:面试核心知识点与实战
  • 运维实施40-MGR高可用
  • Android 颜色百分比对照
  • 国产化Word处理控件Spire.Doc教程:Java实现HTML 转Word自动化
  • 四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型
  • 测试面试题总结一