IIUC,
Вот 5 лет фиктивных данных и корректировок для соответствия вашему входному фрейму данных:
df = pd.DataFrame({'Adj Close':np.random.randint(20,100, 365*5+1)}, index=pd.date_range('2011-01-01', periods=365*5+1))
df = df.set_index([df.index.month, df.index.day], append=True).rename_axis(['Date','month','day'])\
.assign(year=df.index.year)
Используя groupby
, вы можете возвращать 366 дней в году (один год имеетдата прыжка)
df.groupby(['month','day'])['Adj Close'].mean()
Вывод:
month day
1 1 56.6
2 53.8
3 48.0
4 53.6
5 70.4
...
12 27 67.2
28 48.2
29 74.6
30 61.0
31 66.2
Name: Adj Close, Length: 366, dtype: float64