, если ваш индекс является истинным индексом даты и времени:
# Optional fix for datetime-like str index:
# df.index = pd.to_datetime(df.index)
df \
.resample('1y') \
.AverageTemperature \
.agg([min, max])
Пример
dr = pd.date_range('2010-01-01', '2020-01-01')
df = pd.DataFrame(range(len(dr)), index=dr, columns=['AverageTemperature'])
df.resample('1y').AverageTemperature.agg([min, max])
Результат
min max
2010-12-31 0 364
2011-12-31 365 729
2012-12-31 730 1095
2013-12-31 1096 1460
2014-12-31 1461 1825
2015-12-31 1826 2190
2016-12-31 2191 2556
2017-12-31 2557 2921
2018-12-31 2922 3286
2019-12-31 3287 3651
2020-12-31 3652 3652
Plotting
Чтобы построить это, вы можете просто позвонить
df \
.resample('1y') \
.AverageTemperature \
.agg([min, max]) \
.plot()