Еще одно решение - надеюсь, кому-то это понравится:
def add_months(d, months):
return d.replace(year=d.year+months//12).replace(month=(d.month+months)%12)
Это решение не работает в течение дней 29,30,31 для всех случаев, поэтому требуется более надежное решение (что не так приятно больше :)):
def add_months(d, months):
for i in range(4):
day = d.day - i
try:
return d.replace(day=day).replace(year=d.year+int(months)//12).replace(month=(d.month+int(months))%12)
except:
pass
raise Exception("should not happen")
Используйте ниже:
m = pd.DataFrame(s.values.tolist(), index= s.index)
print(m)
0 1 2
0 1 12.0 23.0
1 2 23.0 54.0
2 3 23.0 NaN
3 4 NaN NaN