Как я могу сделать расчет в pandas для указанного столбца c, если фрейм данных является многоиндексным? - PullRequest
1 голос
/ 25 апреля 2020

Таким образом, у меня есть мультииндекс df, который организован по дате (первый уровень) и эквити (второй уровень), а затем для каждого актива есть цена для этого капитала на эту дату. ДФ выглядит так:

df]([![enter image description here] 1

Теперь даты go с 2019 года вплоть до 2020 года.

расчет, который я хочу сделать, выполняется в столбце закрытия_прайса, а базовый c расчет выглядит следующим образом: (сегодняшняя цена закрытия / цена закрытия 5 дней a go) * 100

, что будет эффективным с точки зрения вычислений способ сделать этот расчет? Я думал об использовании для l oop, но есть более 200 000 записей, поэтому я знаю, что это займет вечность.

спасибо за любую помощь, которую вы можете оказать.

1 Ответ

1 голос
/ 25 апреля 2020

С уровнями индекса, именуемыми 'date' и 'equity':

import datetime as dt 
import functools as ft
import numpy as np

the_dates = [dt.date.today(),dt.date.today() - dt.timedelta(days=5)]
data[data.index.isin(the_dates,level='date')].\
     groupby(level='equity')['closing_price'].\
     apply(lambda x: ft.reduce(np.divide,x) * 100) 

Возможно, вам придется пересортировать ваш DataFrame, если операнды нужно поменять местами.

...