计算滚动窗口中第一个值和最后一个值之间的差异

Posted

技术标签:

【中文标题】计算滚动窗口中第一个值和最后一个值之间的差异【英文标题】:Computing the difference between first and last values in a rolling window 【发布时间】:2018-06-20 19:47:35 【问题描述】:

我在索引为日期时间格式的单列数据框上使用 Pandas 滚动窗口工具。

我想为每个窗口计算所述窗口的第一个值和最后一个值之间的差异。给出 lambda 函数时如何引用相对索引? (在下面的括号中)

df2 = df.rolling('3s').apply(...)

【问题讨论】:

【参考方案1】:

IIUC:

In [93]: df = pd.DataFrame(np.random.randint(10,size=(9, 3)))

In [94]: df
Out[94]:
   0  1  2
0  7  4  5
1  9  9  3
2  1  7  6
3  0  9  2
4  2  3  7
5  6  7  1
6  1  0  1
7  8  4  7
8  0  0  9

In [95]: df.rolling(window=3).apply(lambda x: x[0]-x[-1])
Out[95]:
     0    1    2
0  NaN  NaN  NaN
1  NaN  NaN  NaN
2  6.0 -3.0 -1.0
3  9.0  0.0  1.0
4 -1.0  4.0 -1.0
5 -6.0  2.0  1.0
6  1.0  3.0  6.0
7 -2.0  3.0 -6.0
8  1.0  0.0 -8.0

【讨论】:

如果您还想要每个窗口的第一行和最后一行怎么办?尝试了 apply 方法,它可以工作,但无法很好地扩展。 有没有办法在没有应用的情况下做到这一点?申请非常慢

以上是关于计算滚动窗口中第一个值和最后一个值之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas DataFrame 中忽略滚动平均值计算的 NaN 值?

Pandas 按行中的值和其他列中的值在行之间进行差异

两个数据点之间的 Grafana 差异

二分搜索算法

r值和l值之间的差异[重复]

使用 p 值计算 Pandas 扩展/滚动窗口相关性