Считать, если данные выше, чем другой ряд в скользящем окне последних двух (или более) значений в пандах

У меня есть эти две серии в DataFrame:

A    B
1    2
2    3
2    1
4    3
5    2

и я бы создал новую колонку df['C] подсчитывает, сколько раз значение в столбце df['A']выше значения в столбце df['B'] для скользящего окна предыдущих 2 (или более) рядов.

Результат будет примерно таким:

    A    B   C
    1    2   NaN
    2    3   NaN   
    2    1   0
    4    3   1
    5    2   2

Я также хотел бы создать столбец, который суммирует данные в df['A'] выше чем df['B'] всегда используя скользящее окно.

Со следующим результатом:

    A    B   C    D
    1    2   NaN  NaN
    2    3   NaN  NaN
    2    1   0    0
    4    3   1    2
    5    2   2    6

Заранее спасибо.

1 ответ

IIUC

df.assign(C=df.A.gt(df.B).rolling(2).sum().shift(),D=(df.A.gt(df.B)*df.A).rolling(2).sum().shift())
Out[1267]: 
   A  B    C    D
0  1  2  NaN  NaN
1  2  3  NaN  NaN
2  2  1  0.0  0.0
3  4  3  1.0  2.0
4  5  2  2.0  6.0
Другие вопросы по тегам