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

Pandas是否有等效Excel的公式?时间序列逐Tick字段差值计算咨询

在Pandas中计算时间序列字段差值的简便方法

当然有超级省心的办法!完全不用费劲用apply()或者转成NumPy数组循环——Pandas专门为这种“相邻元素差值”的场景提供了diff()方法,和你在Excel里下拉公式的效果一模一样,而且效率高得多。

基础用法

假设你的DataFrame是df,要计算的字段是A,只需要一行代码就能生成差值列:

df['B'] = df['A'].diff()

这样生成的B列里,每个值都是当前行A的值减去上一行A的值,和Excel中B2=A2-A1下拉的逻辑完全一致。

示例演示

给你看个具体例子更清楚:

import pandas as pd

# 构造示例时间序列数据
df = pd.DataFrame({
    'Tick': [1, 2, 3, 4, 5],
    'A': [10, 15, 12, 18, 20]
})

# 计算相邻差值
df['A_diff'] = df['A'].diff()

print(df)

输出结果:

Tick   A  A_diff
0     1  10     NaN
1     2  15     5.0
2     3  12    -3.0
3     4  18     6.0
4     5  20     2.0

可以看到第一行的A_diff是NaN,因为没有上一行的数据,这和Excel里第一行公式返回空值的逻辑一致。如果需要填充这个空值,比如用0代替,直接加一行:

df['A_diff'] = df['A_diff'].fillna(0)

进阶参数

diff()还支持调整对比的间隔:

  • 默认periods=1:和前1行对比
  • 如果设periods=2:就是当前行减去前2行的值
  • 如果设periods=-1:就是当前行减去后1行的值(反向差值)

比如:

# 计算当前行和后一行的差值
df['A_reverse_diff'] = df['A'].diff(periods=-1)

为什么不用apply或循环?

diff()是Pandas的矢量化操作,底层用C实现,比Python循环或者apply()快得多,尤其是处理大规模时间序列数据时,性能差距会非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:34:17