Я хочу вычесть некоторое количество месяцев из столбца datetime.Каждая строка имеет разное количество месяцев для вычитания.Например,
df = pd.DataFrame({
'timestamp': pd.date_range('2017-10-01', '2018-10-01', freq='m'),
'delta_in_months': [1, 4, 2, 5, 1, 3, 1, 5, 2, 4, 1, 3]
})
Результат должен выглядеть следующим образом (округление дня не имеет значения, это может быть 01 или 28/29/30/31, его было легче ввести в 01),
timestamp delta_in_months new_timestamp
0 2017-10-31 1 2017-09-01
1 2017-11-30 4 2017-07-01
2 2017-12-31 2 2017-10-01
3 2018-01-31 5 2017-08-01
4 2018-02-28 1 2018-01-01
5 2018-03-31 3 2017-12-01
6 2018-04-30 1 2018-03-01
7 2018-05-31 5 2017-12-01
8 2018-06-30 2 2018-04-01
9 2018-07-31 4 2018-03-01
10 2018-08-31 1 2018-07-01
11 2018-09-30 3 2018-06-01
Имейте в виду, что это будет для гораздо большего кадра данных.
Я пытался
months_delta = df.delta_in_months.apply(pd.tseries.offsets.MonthOffset)
df['new_timestamp'] = df.timestamp - months_delta
, но это дало очень неожиданные результаты, с каждой строкойзапись является DatetimeIndex.