用熊猫和pd.Grouper以上个月的月底为起点计算月至今的收益?

时间:2020-07-06 09:42:34

标签: python pandas numpy pandas-groupby

考虑以下数据框

date = ['2020-04-30', '2020-05-01', '2020-05-02', '2020-05-03',
        '2020-05-04', '2020-05-05', '2020-05-06', '2020-05-07',
        '2020-05-08', '2020-05-09', '2020-05-10', '2020-05-11',
        '2020-05-12', '2020-05-13', '2020-05-14', '2020-05-15',
        '2020-05-16', '2020-05-17', '2020-05-18', '2020-05-19',
        '2020-05-20', '2020-05-21', '2020-05-22', '2020-05-23',
        '2020-05-24', '2020-05-25', '2020-05-26', '2020-05-27',
        '2020-05-28', '2020-05-29', '2020-05-30', '2020-05-31']

close = [1.914, 1.927, 1.927, 1.84 , 1.83 , 1.859, 1.851, 1.85 , 1.85 ,
   1.849, 1.847, 1.824, 1.837, 1.837, 1.836, 1.836, 1.836, 1.859,
   1.878, 1.898, 1.903, 1.911, 1.911, 1.911, 1.911, 1.911, 1.91 ,
   1.926, 1.928, 1.928, 1.927, 1.94]

df = pd.DataFrame({'close':close}, index=date)

我可以使用以下命令获得本月累计的回报:

df.groupby(pd.Grouper(level=0, freq='m')).apply(lambda x: np.cumprod(1 + x.pct_change())

但是,上面的方法从每个组的开始(每个组的第一个实例)计算累积收益。我想要的是前一组的最后一个实例的累积收益? (例如:此处返回的月份应从“ 2020-04-30”开始,而不是“ 2020-05-01”)。

如何以最有效的方式实现这一目标?

0 个答案:

没有答案