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

Pandas如何为过滤后的DataFrame新增基于移位索引的新列

pandas 新增基于移位索引值列的实现方案

你的需求本质是将DataFrame的索引值向上偏移1位,让当前行取到下一行的索引值,最后一行无后续索引时填充空值,直接用pandas原生的移位方法即可实现,无需自定义循环。


具体实现步骤

  • 首先复现你的样例测试数据
import pandas as pd

# 构造匹配描述的样例DataFrame
df = pd.DataFrame(
    data={"Point": [12, 1, 12]},
    index=[124, 559, 717]
)
  • 核心实现代码
    注意不能直接对Index对象做移位,需要先将索引转为和DataFrame行对齐的Series,再调用shift(-1)实现向上偏移1位(参数为-1代表把后一行的值挪到当前行,默认参数1是把前一行的值挪到当前行):
df["Pre_Index"] = df.index.to_series().shift(-1)
  • 运行结果验证
    执行上述代码后打印DataFrame,输出完全匹配你的预期:
Point  Pre_Index
124     12      559.0
559      1      717.0
717     12        NaN

补充优化

因为NaN值默认会把整数列转为浮点类型,如果你需要Pre_Index列保留整数格式,可以用pandas支持空值的Int64类型做转换:

df["Pre_Index"] = df.index.to_series().shift(-1).astype("Int64")

转换后输出效果如下,不会出现小数位:

Point  Pre_Index
124     12        559
559      1        717
717     12       <NA>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:06:22