如何计算排除前一组值的移动平均线

how to calculate moving average which exclude previous set of values

我试图找到类似于移动平均线但不包括前一组值的东西 下面 excel sheet 的快照显示了 window 为 2 的平均值。

snapshot

我尝试在 pandas 中使用滚动和扩展命令,但它们包括以前的值。 pandas

还有其他方法可以使用吗

一个简单的方法是将列转换为列表,然后使用循环(或更准确地说是“列表理解”)计算移动平均线。

# Creating a DataFrame (like the one you have)
values_col = [i * 10 for i in range(10)]
df = pd.DataFrame({'values': values_col})

window_size = 2
hop_size = 2
n = len(df.index)

values_moving_average = [sum(df['values'].tolist()[i - window_size : i]) / window_size for i in range(window_size, n + 1, hop_size)]

然后您将在 values_moving_average 列表中获得您想要的移动平均线:

# result
[5.0, 25.0, 45.0, 65.0, 85.0]

这里,window_size是window的大小,hop_size是一个变量,可以用来指定两个连续windows的第一个索引之间的距离.例如,如果 hop_size = 1,那么我们将得到列表中以下 windows 的平均值:

(0, 10), (10, 20), (20, 30), ..., (80, 90)

但是,对于 hop_size = 2,我们将有以下 windows:

(0, 10), (20, 30), (40, 50), ..., (80, 90)