Pandas - количество месяцев между двумя датами

Я думаю, что это должно быть просто, но то, что я видел, - это методы, которые включают итерацию по полям даты фрейма данных, чтобы определить разницу между двумя датами. И у меня с этим проблемы. Я знаком с MSSQL DATEDIFF, поэтому я думал, что у Pandas datetime будет что-то подобное. Возможно, но я скучаю по нему.

существует ли Пандонический способ определения количества месяцев как целого числа между двумя датами (datetime) без необходимости итерации? Имея в виду что потенциально существуют миллионы строк, поэтому производительность является соображением.

даты являются объектами datetime, и результат хотел бы, чтобы это-новый столбец был месяцем:

Date1           Date2         Months
2016-04-07      2017-02-01    11
2017-02-01      2017-03-05    1

2 ответов


вот очень простой ответ мой друг:

df['nb_months'] = ((df.date2 - df.date1)/np.timedelta64(1, 'M'))

и так:

df['nb_months'] = df['nb_months'].astype(int)

df.assign(
    Months=
    (df.Date2.dt.year - df.Date1.dt.year) * 12 +
    (df.Date2.dt.month - df.Date1.dt.month)
)

       Date1      Date2  Months
0 2016-04-07 2017-02-01      10
1 2017-02-01 2017-03-05       1