在pandas列中查找最后14个值的平均值,不包括0



我有一个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

最新更新