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

如何在Pandas DataFrame中计算连续行差值并存入后一行?

问题:计算DataFrame连续行差值并生成dA列

原始DataFrame如下:

stkPx  strike     delta trade_date  expirDate      dte  cType  pBidPx  pAskPx    dA
2     86.91    76.0  0.893083 2008-12-29 2009-01-17  0.05205      1    0.50    0.56 -0.16
3     86.91    77.0  0.877667 2008-12-29 2009-01-17  0.05205      1    0.60    0.66 -0.16
4     86.91    78.0  0.859326 2008-12-29 2009-01-17  0.05205      1    0.71    0.76 -0.20
5     86.91    79.0  0.838882 2008-12-29 2009-01-17  0.05205      1    0.85    0.91 -0.21

需求是计算连续两行的差值,将结果存入新列dA,结果保存在两行中的第二行。具体逻辑为:第n行的dA = 第n行的pBidPx - 第n-1行的pAskPx,第一行dA为N/A。

原代码gb['dA'] = gb['pBidPx'] - gb['pAskPx'].shift(-1)不符合预期,正确写法如下:

gb['dA'] = gb['pBidPx'] - gb['pAskPx'].shift(1)

这里使用shift(1)将pAskPx列向下偏移一行,让当前行的pBidPx减去上一行的pAskPx,第一行因无对应上一行数据,会自动填充为NaN(对应需求中的N/A)。

执行后得到的预期结果:

stkPx  strike     delta trade_date  expirDate      dte  cType  pBidPx  pAskPx    dA
2     86.91    76.0  0.893083 2008-12-29 2009-01-17  0.05205      1    0.50    0.56  NaN
3     86.91    77.0  0.877667 2008-12-29 2009-01-17  0.05205      1    0.60    0.66  0.04  # 0.60 - 0.56
4     86.91    78.0  0.859326 2008-12-29 2009-01-17  0.05205      1    0.71    0.76  0.05  # 0.71 - 0.66
5     86.91    79.0  0.838882 2008-12-29 2009-01-17  0.05205      1    0.85    0.91  0.09  # 0.85 - 0.76

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:30:27