Как в Python Datetime сделать так, чтобы менялся год и месяц?
Можно подобрать одну из хороших мощных библиотек для удобной работы с дантами, чтобы там были методы перелистывания дат помесячно.
Но если не хочется плодить зависимости, то я рекомендую штатно разобрать дату на день, месяц и год, убедиться, что день не превышает 28 (иначе такое число не в каждом месяце найдётся), а затем прибавить к месяцу 1 по модулю 12. В случае переполнения нужно увеличить еще и год.

Такое элегантно записыается с помощью функции divmod:
month -= 1
year_increment, month = divmod(month + 1, 12)
month += 1
Если вы работаете с Pandas то есть более простое решение.
Добавляем заданное количество месяцев (в данном случае -6)
import datetime as dt
import pandas as pd
date = dt.date.today() + pd.offsets.DateOffset(months=6)
print(date)
Результат:
2022-07-20 00:00:00

Добавляем год:
date = dt.date.today() + pd.offsets.DateOffset(years=1)
print(date)
Результат:
2023-01-20 00:00:00

Добавляем и то и другое:
date = dt.date.today() + pd.offsets.DateOffset(years=1,months=3)
print(date)
Результат:
2023-04-20 00:00:00