Как подсчитать количество значений по условию в скользящем окне?
Есть столбец: 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