2017-11-30 17 views
0

팬더 과거 두 개 (또는 그 이상)의 값의 롤링 윈도우 내의 다른 시리즈보다 높은 경우 :카운트 데이터가 나는 DataFrame에서이 두 시리즈가

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

을 나는 새 열을 만들 수있는 것 df['C ] 열 df['A']의 값이 이전 2 개 (또는 그 이상) 행의 롤 창에 대한 df['B']의 값보다 몇 배나 많은지 계산합니다. 나는 또한 항상 롤링 창을 사용하여 df['B']보다 높은 df['A']의 데이터를 요약 열을 만들고 싶습니다

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

:

결과는 다음과 같이 될 것이다. 다음과 같은 결과로

: 사전에

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

감사합니다.

답변

0

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