Предполагается, что на компанию приходится 1 значение в год.Вы можете уменьшить дату до года.Это намного проще.Нет необходимости группировать или подавать заявку.
Скажите, что ваш фрейм данных имеет имя df
.Во-первых, уменьшите дату до года:
df['year'] = df['Date'].dt.year
Во-вторых, добавьте год + 5
df['year+5'] = df['year'] + 5
В-третьих, объедините «df» с собой:
df_new = pandas.merge(df, df, how='inner', left_on=['Instrument', 'year'], right_on=['Instrument','year+5'], suffixes=['_start', '_end'])
Наконец, вычислите скользящий CAGR
df_new['CAGR'] = (df_new['Company Market Cap_end']/df_new['Company Market Cap_start'])**(0.2)-1