нарезка по датам с неуникальным индексом - PullRequest
0 голосов
/ 07 мая 2020

Мой набор данных выглядит так, как показано ниже, с точкой в ​​индексе, но не уникальным.

period,portfolio_name,returns  
2020-01,port1,0.01  
2020-02,port1,0.01  
2020-03,port1,0.01   
2020-04,port1,0.01   
2020-01,port2,0.01  
2020-02,port2,0.01  
2020-03,port2,0.01  
2020-01,port3,0.01  
2020-02,port3,0.01  

Вот как я добился производительности за этот период, где roll_ret - это просто настраиваемая функция для сложения результатов за любые периоды

current_period = '2020-03'
start_period = '2020-01'
mask = (df['MTH'] >= start_period) & (df['MTH'] <= current_period)
df_per = df.loc[mask]
#print(df_per)
per_returns = df_per.groupby('GROUP_IDENTIFIER')['GROUP_PERFORMANCE'].agg(period_perf=rolled_ret)

У меня есть пара из вопросов - 1, могу ли я как-нибудь лучше срезать дату, чтобы я мог просто ввести, скажем, 2019 год, чтобы получить все числа за 2019 год? Я пробовал использовать LO C, но поскольку индекс не является уникальным, мне кажется, что он не работает. Кроме того, я не хочу менять код для последнего месяца каждый месяц, когда добавляются новые данные. Вопрос 2 - в приведенном выше примере данных порт 3 имеет только данные jan и feb, но все равно будет генерировать фигуру так, как я это делаю ... Я бы предпочел, чтобы минимальное количество периодов было равно полной длине окно хочу. Могу ли я использовать .rolling или аналогичный для этого, поскольку он использует окно? Могу ли я указать период прокрутки в моем индексе периода?

заранее благодарим за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...