You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按CUSIP与年份分组计算月度数据年度平均收益率问题求助

问题出在滚动平均上

你用的rolling(12, 1).mean()是计算滚动12期的移动平均,并非你需要的年度整体平均。这个方法会逐行取当前行及之前11行的窗口计算均值,导致每个月份的结果随窗口移动而变化,完全不符合“同一CUSIP同一年份所有月度记录共享同一个年度平均收益率”的需求。

正确实现代码

直接使用transform('mean')即可,它会为每个分组计算整体均值,并将该均值映射回原DataFrame的对应分组行中,保证同组内所有行的mean_return值一致:

monthly_stock_data['mean_return'] = monthly_stock_data.groupby(by=['CUSIP', 'year'])['RET'].transform('mean')
逻辑说明
  • 分组逻辑:通过CUSIP和year的组合分组,精准定位单只股票单一年份的所有月度数据
  • transform('mean')的作用:计算每个分组内RET列的平均值,然后将该平均值填充到分组内的每一行,实现同组所有行共享同一年度平均收益率的效果

内容的提问来源于stack exchange,提问作者loyala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:35:23