我有2个不同的数据框(权重= CTPortfolioWeight,返回数= DRXCTVar),两者的Datetime索引(每月和每天)都不同,但是列的长度相同(列是27种不同的货币)。
我要实现的目标如下:
这将导致每列的每日加权加权收益。
解决方案1 我试图通过根据月和年索引匹配不同数据框的值来做到这一点,但是根本没有成功。
此代码为我提供了具有NaN值的DRXCTVar数据帧
for date in CTPortfolioWeight.index.tolist():
DRXCTVar.loc[(DRXCTVar.index.year == date.year) & (DRXCTVar.index.month == date.month)] *= CTPortfolioWeight.shift()
解决方案2 我还尝试使用DRXCTVar的每日索引创建一个新的数据帧,其中包括基于CTPortfolioWeight数据帧的所有权重(因为我常见于具有相等DatetimeIndex的数据帧的乘法)。仅填充了两个月中作为日数据框的日期(这是最后一个开放交易日),而其他日期的结果为NaN。我添加了一张图片以使其清晰。
for date in CTPortfolioWeight.index.tolist():
DRXCTVar.loc[(DRXCTVar.index.year == date.year) & (DRXCTVar.index.month == date.month)] = CTPortfolioWeight.shift()
我对Python真的很陌生,但通常都能通过它。但是,这种相对简单的计算方法使我陷入了太久。
我希望有人可以帮助我。如果有不清楚的地方,请询问,我会尝试更清楚地阐述。
预先感谢您,沃利。