提问者:小点点

如何为数据帧制作滚动渐变列


我有一个时间序列,比如:

            United Kingdom
Time (CET)                
2020-02-15         1739771
2020-02-16         1649750
2020-02-17         1887394
2020-02-18         1922006
2020-02-19         1957194
2020-02-20         1878259
2020-02-21         1890076
2020-02-22         1677928
2020-02-23         1688218
2020-02-24         1948947
[...]

我想做一个新的列,它是长度为5的滚动窗口的渐变。 因此,第一个条目将是通过[1739771,1649750,1887394,1922006,1957194]拟合的直线的梯度,第二个条目将是通过[1649750,1887394,1922006,1957194,1878259]拟合的直线的梯度,依此类推。

拟合直线并因此返回渐变的代码为:

import numpy as np
Polynomial = np.polynomial.Polynomial
def fitcurve(sequence):
    poly = Polynomial.fit(range(len(sequence)), sequence, 1)
    a = poly.convert().coef
    return a[0], a[1]  #  a[1] is the gradient we want.

新列中的前4个条目必须是NaNs,这是可以的。

我怎么做这个新专栏?


共1个答案

匿名用户

你应该使用滚动功能。 像这样的东西应该会起作用:

df["UK Rolling"] = df["United Kingdom"].rolling(5).apply(lambda x: fitcurve(x)[1])