计算 pandas 的移动平均线

Compute moving average in pandas with a twist

这在 excel 中似乎很容易实现。不确定如何使用 pandas.

执行此操作

我的数据集如下所示

[Row,Flag,Value
1,FALSE,3
2,FALSE,1
3,FALSE,2
4,FALSE,3
5,FALSE,5
6,TRUE,nan
7,TRUE,nan
8,TRUE,nan
9,TRUE,nan]

我想要一个看起来像

的输出
[Row,Flag,Value
1,FALSE,3
2,FALSE,1
3,FALSE,2
4,FALSE,3
5,FALSE,5
6,TRUE,2.75
7,TRUE,3.19
8,TRUE,3.48
9,TRUE,3.61]

我想要一个在 flag = TRUE 时计算前 4 行移动平均值的输出。此外,计算移动到下一行时应使用最近计算的平均值。从上面的例子中,很明显第 6 行的平均值是 (5+3+3+1)/4 = 2.75。第 7 行的平均值应包括最近计算的第 6 行值 (**2.75**,5,3,2)/4 = 3.19

我已经参考了以下文章,但这很有帮助

只需使用一个for循环

for i in range(len(df)):
    if df["Flag"].iloc[i]:
        df["Value"].iloc[i] = df.loc[:,"Value"].iloc[i-4:i].mean()