首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:计算需要从数据帧中分组的值的5年滚动CAGR

Python:计算需要从数据帧中分组的值的5年滚动CAGR
EN

Stack Overflow用户
提问于 2019-09-28 02:08:52
回答 2查看 1.6K关注 0票数 1

我有一个包含历史市值的数据框架,我需要计算它们的5年复合年增长率(CAGR)。但是,dataframe有数百家公司,每家公司的价值都是20年,所以我需要能够隔离每个公司的数据来计算它们的CAGR。我该怎么做呢?

计算复合增长率的函数是:(end/start)^(1/# years)-1。我从未使用过.groupby().apply(),因此我不知道如何实现滚动值的复合增长率方程。

下面是部分数据帧的屏幕截图,这样您就可以直观地表示我正在尝试使用的内容:Screeshot of dataframe.

任何指导都将不胜感激!

EN

Stack Overflow用户

回答已采纳

发布于 2019-09-28 02:50:32

假设每个公司每年有1个价值。您可以将日期减少为年份。这要简单得多。不需要groupby或apply。

假设您的数据帧名为df。首先,将日期减少到年份:

代码语言:javascript
运行
复制
df['year'] = df['Date'].dt.year

第二,添加year+5

代码语言:javascript
运行
复制
df['year+5'] = df['year'] + 5

第三,将'df‘与自身合并:

代码语言:javascript
运行
复制
df_new = pandas.merge(df, df, how='inner', left_on=['Instrument', 'year'], right_on=['Instrument','year+5'], suffixes=['_start', '_end'])

最后,计算滚动CAGR

代码语言:javascript
运行
复制
df_new['CAGR'] = (df_new['Company Market Cap_end']/df_new['Company Market Cap_start'])**(0.2)-1
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58139544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档