创建具有每日PeriodIndex的熊猫DataFrame并基于偏移量(例如“ 5D”)进行滚动窗口计算时,结果与预期不符。
我希望滚动窗口是最近5天,但是该窗口似乎是从索引的开头开始,并且每个项目都在增长。
滚动对于具有DatetimeIndex的DataFrame可以按预期进行
df_datetimeindex = pd.DataFrame([0.5]*10, columns=['data'], index=pd.date_range(start='2019', periods=10, freq='D'))
df_periodindex = pd.DataFrame([0.5]*10, columns=['data'], index=pd.period_range(start='2019', periods=10, freq='D'))
display(
df_datetimeindex.data.rolling('5D', min_periods=1).sum(),
df_periodindex.data.rolling('5D', min_periods=1).sum()
)
display(df_datetimeindex.index, df_periodindex.index)
display(df_datetimeindex.data.rolling('5D', min_periods=1), df_periodindex.data.rolling('5D', min_periods=1))
收益
2019-01-01 0.5
2019-01-02 1.0
2019-01-03 1.5
2019-01-04 2.0
2019-01-05 2.5
2019-01-06 2.5
2019-01-07 2.5
2019-01-08 2.5
2019-01-09 2.5
2019-01-10 2.5
Freq: D, Name: data, dtype: float64
2019-01-01 0.5
2019-01-02 1.0
2019-01-03 1.5
2019-01-04 2.0
2019-01-05 2.5
2019-01-06 3.0
2019-01-07 3.5
2019-01-08 4.0
2019-01-09 4.5
2019-01-10 5.0
Freq: D, Name: data, dtype: float64
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10'],
dtype='datetime64[ns]', freq='D')
PeriodIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10'],
dtype='period[D]', freq='D')
Rolling [window=432000000000000,min_periods=1,center=False,win_type=freq,axis=0]
Rolling [window=432000000000000,min_periods=1,center=False,win_type=freq,axis=0]
我错过了对此行为的解释吗?