Подсчитайте, сколько раз значение соответствует критерию в скользящем окне - PullRequest
0 голосов
/ 08 февраля 2020
In [4]: data = pd.DataFrame([[9,4,16],[5,4,2],[1,3,13],[26,7,3]])               

In [5]: data                                                                    
Out[5]: 
    0  1   2
0   9  4  16
1   5  4   2
2   1  3  13
3  26  7   3

Я хочу посчитать, сколько раз значения в скользящем окне размера n в столбце 0 превышают значение в столбце 1. В этом случае окно включает в себя значения 9, 5, 1, 26 ( размер 4) даст число 3, так как 9, 5 и 26, но не 1 больше 4. Точно так же, если применить к столбцу 2 с использованием скользящего окна 4 в столбце 1, значение будет 0, так как ни один из 4, 4, 3, 7 больше 16

1 Ответ

0 голосов
/ 08 февраля 2020

Вы можете сделать что-то вроде этого.

Однако я не уверен, какой вывод вы хотите, потому что выход будет таким же, как показано, и у вас будет NaN, пока значение скользящего окна не будет достигнуто.

def func(arr):
    count = 0
    for i in arr : 
        if i > len(arr) : 
            count = count + 1
    return count
data[0].rolling(4).apply(lambda x: func(x),raw=False)

Вывод

0    NaN
1    NaN
2    NaN
3    3.0
data[0].rolling(2).apply(lambda x: func(x),raw=False)

приведет к

0    NaN
1    2.0
2    1.0
3    1.0
...