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

У меня есть две серии в 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

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


person Giulio    schedule 30.11.2017    source источник


Ответы (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
person BENY    schedule 30.11.2017