元のデータフレームに DataFrame.pivot()
を行い、flagの値で列を展開してからrolling()
をするとよいのではないでしょうか。
Python
1import pandas as pd
2import datetime
3
4df = pd.DataFrame({'flg':[1,2,1,1,2,1],'volume':[10,50,20,30,40,10]},index=pd.date_range('2019/1/1', periods=6, freq='1d'))
5
6ret = df.pivot(columns='flg', values='volume').rolling('3d').sum()
7print(ret)
8#flg 1 2
9#date
10#2019-01-01 10.0 NaN
11#2019-01-02 10.0 50.0
12#2019-01-03 30.0 50.0
13#2019-01-04 50.0 50.0
14#2019-01-05 50.0 40.0
15#2019-01-06 40.0 40.0
変換前と同形式のデータを得たいのであれば、stack()
してください
Python
1print(ret.stack().rename('volume').reset_index('flg'))
2# flg volume
3#2019-01-01 1 10.0
4#2019-01-02 1 10.0
5#2019-01-02 2 50.0
6#2019-01-03 1 30.0
7#2019-01-03 2 50.0
8#2019-01-04 1 50.0
9#2019-01-04 2 50.0
10#2019-01-05 1 50.0
11#2019-01-05 2 40.0
12#2019-01-06 1 40.0
13#2019-01-06 2 40.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。