Python 熊猫在一个日历年窗口内滚动总和?
我有一个每日数据索引pd.DataFrame,我想在它上面使用一个日历年计算滚动总和,但这会导致错误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(
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()
另请参见,了解哪些频率字符串可用于指定滚动时间窗口