我有一个DataFrame,其中有一列值:
col1
0 1
1 3
2 6
3 2
4 4
5 0
6 0
7 3
8 4
9 5
10 7
11 5
12 2
13 5
14 4
15 0
16 0
17 2
18 4
19 5
我想在数据库中创建一个新列,为每一行计算列中最后14个值的平均值。然而,这是在最后14个值的总和除以大于0的值的数量的条件下进行的。
例如,对于第19行,平均值将是最后14个值(包括第19行的值(的和除以11,因为最后14个数值中有3个零。
我怎样才能做到这一点?
您要求rolling().sum()
:
N = 14
df['col1'].rolling(N).sum()/df['col1'].ne(0).rolling(N).sum()
输出:
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 3.916667
14 4.166667
15 4.272727
16 4.100000
17 4.100000
18 4.100000
19 4.181818
Name: col1, dtype: float64