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

pandas如何基于移位列新增DataFrame列计算今日开盘与昨日最高涨跌幅

解决方案

你原来的代码存在两个问题:

  • shift方向使用错误:shift(-1)是取后一行(下一个交易日)的数据,你要获取前一日最高价,应该使用shift(1)取上一行数据
  • 计算顺序错误:你先做了开盘价减当日最高价的计算再移位,逻辑完全偏离需求

正确的非迭代实现代码如下:

df['prevhigh_curropen'] = (df['open'] - df['high'].shift(1)) / df['high'].shift(1)

如果需要保留三位小数匹配你示例中的格式,可以再加一步四舍五入:

df['prevhigh_curropen'] = df['prevhigh_curropen'].round(3)

计算逻辑验证:
以索引为1的行举例,当日开盘价为103,前一日最高价为索引0行的110,涨跌幅计算为 (103 - 110)/110 ≈ -0.064,完全匹配你的期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:39:03