You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame的索引值重置为从0开始

Pandas滚动计算后将索引重置为从0起始的方案

问题对应代码

rolling_window = 120
df = df.rolling(rolling_window, min_periods=1).agg(['mean','std'])
df.columns = df.columns.map('_'.join)
# df = df.reset_index()
df = df.iloc[(rolling_window-1):,]
df = df.rename_axis('timestamps').reset_index()
df = df.set_index('timestamps')

运行上述代码后最终输出的DataFrame行索引从119开始,需要调整为从0开始连续编号。

问题原因

iloc 做行切片时不会自动重置行索引标签,会保留切片前每行对应的原始索引值。上述代码从原数据第119个位置开始切片,切片后的行索引初始值为119并逐行递增;后续流程将该索引重命名为timestamps后又重新设为行索引,最终索引就保留了从119起始的编号。

修复方法

在iloc切片操作后追加reset_index(drop=True),丢弃原有旧索引标签,自动生成从0开始的连续整数索引即可。修改后完整代码如下:

rolling_window = 120
df = df.rolling(rolling_window, min_periods=1).agg(['mean','std'])
df.columns = df.columns.map('_'.join)
# 切片后立即重置索引,丢弃原有的行号标签
df = df.iloc[(rolling_window-1):,].reset_index(drop=True)
df = df.rename_axis('timestamps').reset_index()
df = df.set_index('timestamps')

如果已经跑完原代码得到了最终结果对象,也可以直接对结果执行如下命令重置索引:

df = df.reset_index(drop=True)

注意:该操作会直接丢弃当前作为索引的timestamps列值,新索引为从0开始的连续整数,如果需要保留原timestamps的数值,请使用前面修改流程的方案。

内容的提问来源于stack exchange,提问作者Sushil Kokil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:54:28