How to calculate Timedelta in Months?

To calculate the Timedelta in Months, you need to take the total number of days in the Timedelta and divide it by 30.4, which is the average number of days in a month. This will give you the number of months in the Timedelta. You can then round this number to get the total number of Months.


You can use the following function to calculate a timedelta in months between two columns of a pandas DataFrame:

def month_diff(x, y):
    end = x.dt.to_period('M').view(dtype='int64')
    start = y.dt.to_period('M').view(dtype='int64')
    return end-start

The following example shows how to use this function in practice.

Example: Calculate Timedelta in Months in Pandas

Suppose we have the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
                   'start_date': ['20210101', '20210201', '20210401'],
                   'end_date': ['20210608', '20210209', '20210801'] })

#convert start date and end date columns to datetime
df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = pd.to_datetime(df['end_date'])

#view DataFrame
print(df)

  event start_date   end_date
0     A 2021-01-01 2021-06-08
1     B 2021-02-01 2021-02-09
2     C 2021-04-01 2021-08-01

Now suppose we’d like to calculate the timedelta (in months) between the start_date and end_date columns.

To do so, we’ll first define the following function:

#define function to calculate timedelta in months between two columns
def month_diff(x, y):
    end = x.dt.to_period('M').view(dtype='int64')
    start = y.dt.to_period('M').view(dtype='int64')
    return end-start

Next, we’ll use this function to calculate the timedelta in months between the start_date and end_date columns:

#calculate month difference between start date and end date columns
df['month_difference'] = month_diff(df.end_date, df.start_date)

#view updated DataFrame
df

    event	start_date	  end_date	month_difference
0	A	2021-01-01	2021-06-08	5
1	B	2021-02-01	2021-02-09	0
2	C	2021-04-01	2021-08-01	4

The month_difference column displays the timedelta (in months) between the start_date and end_date columns.

x