Python 时间序列多索引数据帧的重采样
我有一个由十个不同的投资组合组成的数据框架,期限为12904天。我试图利用过去750天的收益率,得到每月最后一天的滚动协方差矩阵。我使用.rolling()函数获取每日(编辑:仅工作日)协方差矩阵。不幸的是,对该矩阵重新采样以获取每日协方差矩阵的最后一个值不会返回每天的矩阵,而是返回一行。 非常感谢您的帮助 数据帧返回(12904行×10列): 每日滚动协方差矩阵:Python 时间序列多索引数据帧的重采样,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个由十个不同的投资组合组成的数据框架,期限为12904天。我试图利用过去750天的收益率,得到每月最后一天的滚动协方差矩阵。我使用.rolling()函数获取每日(编辑:仅工作日)协方差矩阵。不幸的是,对该矩阵重新采样以获取每日协方差矩阵的最后一个值不会返回每天的矩阵,而是返回一行。 非常感谢您的帮助 数据帧返回(12904行×10列): 每日滚动协方差矩阵: rolling_cov = excess_return.rolling(750).cov().shift() 我尝试的代码:
rolling_cov = excess_return.rolling(750).cov().shift()
我尝试的代码:
rolling_cov_monthly = excess_return.rolling(750).cov().shift().groupby([pd.Grouper(level="Date",freq="M")]).last()
rolling_cov.resample("M").last()
这不会返回错误,但不会以矩阵格式返回所需的输出
我试过的另一个代码:
rolling_cov_monthly = excess_return.rolling(750).cov().shift().groupby([pd.Grouper(level="Date",freq="M")]).last()
rolling_cov.resample("M").last()
出现以下错误消息:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
获取滚动协方差,然后仅过滤一年中的最后一个工作日-月份组:
rolling_cov = excess_return.rolling(750).cov()
date_index = rolling_cov.index.get_level_values(0)
last_days = (
pd.Series(date_index)
.groupby(date_index.strftime('%Y-%m'))
.last()
)
rolling_cov[rolling_cov.index.get_level_values(0).isin(last_days)]
只有当月的最后一天实际包含在数据集中时,这才有效。但数据集仅包括工作日。请检查编辑。您手头是否有一个解决方案,它不会显示数据集中的最后一天,而是该月的最后一天?因此,如果一个月的最后一个工作日是例如1月29日星期五,那么数据框将显示该日期的值,但以1月31日为日期。您只需修改索引的值,但索引是不可变的对象。由于这是一个不同的主题,请提出另一个关于修改多索引的问题。谢谢,我在这里提出了一个新问题:)