У меня есть временные ряды для разных категорий
cat date price
A 2000-01-01 100
A 2000-02-01 101
...
A 2010-12-01 140
B 2000-01-01 10
B 2000-02-01 10.4
...
B 2010-12-01 11.1
...
Z 2010-12-01 13.1
Мне нужно рассчитать доходность по всем активам, что очень быстро, используя
df['ret'] = df['price'] / df['price'].shift(1) - 1
Однако это также вычисляет неверные доходы дляпервый элемент каждой компании (кроме A) основан на последнем наблюдении предыдущей компании.Поэтому я хочу получить первое наблюдение в каждой категории.
Эти наблюдения легко получить, используя
df.groupby('cat')['ret'].first()
, но я немного растерялся, как их установить.
df.groupby('cat')['ret'].first() = np.NaN
и
df.loc[df.groupby('cat')['ret'].first(), 'ret']=np.NaN
никуда не вели.