Вы можете использовать pd.date_range
для установки кварталов сравнения. Вы просто выбираете дату начала, выбираете, сколько периодов вы хотите, и, установив freq='BQS'
, вы получаете начало рабочего квартала:
quarters = pd.date_range(pd.Timestamp(2011,4,1), periods=4, freq='BQS')
Затем вы можете установить свой столбец результатов на:
(df.loc[df['date_column'].isin(quarters), ['ABC US Equity']]
.apply(lambda x: x.mean()/df['ABC US Equity']-1))
РЕДАКТИРОВАТЬ: Если ваш столбец даты является индексом, вы можете сделать:
df.reindex(quarters).apply(lambda x: x.mean()/df['ABC US Equity']-1)
Убедитесь, что ваш индекс - индекс datetime. Если это не так, вы можете сделать:
df.index = pd.to_datetime(df.index)
Примечание. Ваш образец содержит 2 значения с датой 2011-01-03. Если последнее значение является ошибкой, вы можете начать свои кварталы в 2011-04-01, что даст вам 2012-01-02 в качестве даты последнего квартала. Если они оба действительны, но вы хотите исключить первое в среднем, вам нужно будет добавить .iloc[1:]
к первой строке выше.