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

Pandas如何获取列shift前最新值并放置在新增列首行

实现方法

你当前代码的问题有两点:

  1. shift(1)会将Forecast列所有元素向下移动1行,原列最后一个值(也就是你需要的75000)会在移位后被丢弃,移位完成后再取值拿不到这个目标值
  2. df['Forecast'].tail(1)取到的是移位后列的最后一个值,且赋值时会自动对齐原索引,所以值会出现在最后一行而非首行

正确的实现需要在移位前先提取目标值,再完成列赋值,修改后的完整代码如下:

def show_data():
    df = pd.DataFrame(myresult, columns=['Production', 'Forecast'])
    # 移位前提取Forecast列的最新(最后一行)值
    latest_val = df['Forecast'].iloc[-1]
    # 执行移位操作
    df['Forecast'] = df['Forecast'].shift(1)
    # 初始化新列,默认填充空值
    df['Next Forecast'] = pd.NA
    # 给新列第一行赋值提前提取的最新值
    df.iloc[0, df.columns.get_loc('Next Forecast')] = latest_val

代码说明

  • 用iloc[-1]在移位前提取原Forecast列最后一行的值,避免移位后值丢失
  • 新列先全部设为空值,仅给第一行位置赋目标值,用iloc定位第一行不受自定义索引影响,兼容性更好
  • 执行后得到的效果和预期输出完全一致:首行Next Forecast为75000,其余行均为空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:18:25