Как подсчитать количество значений по условию в скользящем окне?

Есть столбец: D['W'] = [1,1,1,1,1,9,8,1,1,1,1,1,1]

На выходе хочу получить колонку с к-вом элементов в столбце 'W' из последних 4, которые > 7 D['Col W>20 on 7'] = [0,0,0,0,0,1,2,2,2,1,0,0,0]

Как подсчитать в скользящем окне количество элементов из последних 4, которые >7?

Так, разумеется не работает:

D['Col W>20 on 7'] = len(D['W'].rolling(4)>7)

Ответы (1 шт):

Автор решения: MaxU

Попробуйте так:

s = pd.Series([1,1,1,1,1,9,8,1,1,1,1,1,1])

res = s.rolling(4, min_periods=1).apply(lambda x: x.gt(7).sum())

результат:

In [137]: res
Out[137]: 
0     0.0
1     0.0
2     0.0
3     0.0
4     0.0
5     1.0
6     2.0
7     2.0
8     2.0
9     1.0
10    0.0
11    0.0
12    0.0
dtype: float64
→ Ссылка