Я пытаюсь создать набор дат с функциональностью pandas date_range. Затем я хочу перебрать этот диапазон и вычесть несколько месяцев из каждой из дат (точное число месяцев определяется в цикле), чтобы получить новую дату.
Я получаю очень странные результаты, когда делаю это.
Самый ценный игрок:
#get date range
dates = pd.date_range(start = '1/1/2013', end='1/1/2018', freq=str(test_size)+'MS', closed='left', normalize=True)
#take first date as example
date = dates[0]
date
Timestamp('2013-01-01 00:00:00', freq='3MS')
Все идет нормально.
Теперь предположим, что я хочу вернуться всего на один месяц назад с этой даты. Я определяю numpy timedelta (он поддерживает месяцы для определения, а timedelta pandas - нет):
#get timedelta of 1 month
deltaGap = np.timedelta64(1,'M')
#subtract one month from date
date - deltaGap
Timestamp('2012-12-01 13:30:54', freq='3MS')
Почему так? Почему я получаю 13:30:54 по компоненту времени вместо полуночи.
Более того, если я вычитаю более 1 месяца, сдвиг становится настолько большим, что я теряю целый день:
#let's say I want to subtract both 2 years and then 1 month
deltaTrain = np.timedelta64(2,'Y')
#subtract 2 years and then subtract 1 month
date - deltaTrain - deltaGap
Timestamp('2010-12-02 01:52:30', freq='3MS')