Python 熊猫在一个日历年窗口内滚动总和?

Python 熊猫在一个日历年窗口内滚动总和?,python,pandas,dataframe,rolling-computation,Python,Pandas,Dataframe,Rolling Computation,我有一个每日数据索引pd.DataFrame,我想在它上面使用一个日历年计算滚动总和,但这会导致错误ValueError:window必须是整数 import pandas as pd from pandas.tseries.offsets import BDay start_date = pd.to_datetime('2015-01-01').date() end_date = pd.to_datetime('2019-12-31').date() dfo = pd.DataFrame(

我有一个每日数据索引pd.DataFrame,我想在它上面使用一个日历年计算滚动总和,但这会导致错误
ValueError:window必须是整数

import pandas as pd
from pandas.tseries.offsets import BDay

start_date = pd.to_datetime('2015-01-01').date()
end_date = pd.to_datetime('2019-12-31').date()

dfo = pd.DataFrame(data=0,
                   index=pd.date_range(start_date, end_date, freq=BDay()),
                   columns=['col1', 'col2'])
dfo.index = dfo.index.date

# ... fill in some data and then:

dfo = dfo.rolling('1Y').sum()
导致错误的原因:
ValueError:窗口必须是整数


由于我有每日BD数据,我可以使用大小为252的窗口,即每年的平均业务交易日,但对于我的用例来说,最好使用日历年。

您的索引是一个
对象
数据类型
。使用时间间隔的滚动窗口期望数据帧具有
datetimeindex
。您只需执行以下操作即可转换索引:

dfo.index = pd.to_datetime(dfo.index)
并使用以下公式计算一年的滚动总和:

dfo.rolling('365D').sum()
另请参见,了解哪些频率字符串可用于指定滚动时间窗口