Использование dateoffset панд и шаг вперед num_years (задается столбцом)

У меня есть фрейм данных со столбцом datetime Date_Begin. У меня есть еще один столбец Years_to_add. Я хочу рассчитать третий столбец, в котором DateBegin шагнул вперед на количество лет в столбце years_to_add. Я хочу избежать использования приблизительных значений, таких как 365,25 в год. Я хочу просто добавить количество лет в календарном смысле (я знаю, что будут проблемы с добавлением года к 29 февраля).

В моей версии pandas я не могу использовать годы как timedelta (больше не поддерживается), поэтому я использую метод DateOffset.

Я не могу понять синтаксис правильно. Я пробовал следующее, основываясь на предложениях из здесь:

df["begin_date"] + pd.DateOffset(years=int(df["years_to_add"]))

df["begin_date"] + df["years_to_add"].apply(pd.DateOffset.years)

person Tim    schedule 21.03.2021    source источник


Ответы (1)


Просто передайте его как лямбда-функцию

df["begin_date"] + df["years_to_add"].apply(lambda y: pd.DateOffset(years=y))
person Raghava Dhanya    schedule 22.03.2021
comment
Извините за задержку. Решение работает, но выдает предупреждение об ошибке: PerformanceWarning: Adding/subtracting object-dtype array to DatetimeArray not vectorized. Есть ли лучший способ использовать функцию DateOffset, чтобы избежать этого? - person Tim; 26.03.2021
comment
Добавление DateOffset к DatetimeArray само по себе не векторизовано, поскольку для DateOffset нет низкоуровневого dtype. Существует dtype для timedelta, он допускает только смещения, указанные в днях, не поддерживает годы. Так что нет лучшего способа использовать DateOffset для векторизации. @Тим - person Raghava Dhanya; 26.03.2021