Изменен ответ Йоханнеса Вэй в случае 1new_month = 121. Это отлично работает для меня. Месяцы могут быть положительными или отрицательными.
def addMonth(d,months=1):
year, month, day = d.timetuple()[:3]
new_month = month + months
return datetime.date(year + ((new_month-1) / 12), (new_month-1) % 12 +1, day)