У меня есть набор данных, который содержит ежедневные процентные доходы для различных фондовых отраслей. Полный набор данных слишком велик, чтобы показать его здесь, но вот фиктивный фрейм данных с более или менее одинаковой структурой:
df = pd.DataFrame(np.array([['01/01/2020', 'energy', 0.25], ['01/02/2020', 'energy', -2], ['01/01/2020', 'technology', 1.5], ['01/02/2020', 'technology', 1], ['01/01/2020', 'healthcare', -1], ['01/02/2020', 'healthcare', 0.5]]),
columns=['date', 'industry', 'return'])
date industry return
0 01/01/2020 energy 0.25
1 01/02/2020 energy -2
2 01/01/2020 technology 1.5
3 01/02/2020 technology 1
4 01/01/2020 healthcare -1
5 01/02/2020 healthcare 0.5
Я хотел бы создать индекс для каждой отдельной отрасли, который начинается с 100 для первая дата кадра данных, а затем увеличивается / уменьшается в зависимости от процента возврата этого дня до последней даты в кадре данных. Я могу заполнить начальное значение 100 для самых ранних дат:
df['index'] = np.where(df['date'] == df['date'].min(), 100, 0)
date industry return index
0 01/01/2020 energy 0.25 100
1 01/02/2020 energy -2 0
2 01/01/2020 technology 1.5 100
3 01/02/2020 technology 1 0
4 01/01/2020 healthcare -1 100
5 01/02/2020 healthcare 0.5 0
Но я действительно не знаю, как продолжить заполнение других значений индекса отсюда. Вывод должен выглядеть следующим образом:
date industry return index
0 01/01/2020 energy 0.25 100
1 01/02/2020 energy -2 98
2 01/01/2020 technology 1.5 100
3 01/02/2020 technology 1 101
4 01/01/2020 healthcare -1 100
5 01/02/2020 healthcare 0.5 100.5
Кто-нибудь здесь знает, как это сделать / может указать мне правильное направление? * уточнение: мне нужно значение индекса «составной», а не кумулятивный. Например, допустим, у меня есть 3 даты для отрасли, и процентные доходы равны 0,5, 0,1 и 1,2 соответственно, выходной индекс должен быть 100 (начальная дата), 100,1 (100 * 1,001) и 101,3012 100 (100,1 * 1,012). )