Вы можете использовать следующую функцию для вычисления временной дельты в месяцах между двумя столбцами кадра данных pandas:
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
В следующем примере показано, как использовать эту функцию на практике.
Пример: рассчитать Timedelta в месяцах в Pandas
Предположим, у нас есть следующие 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
Теперь предположим, что мы хотим рассчитать разницу во времени (в месяцах) между столбцами start_date и end_date .
Для этого мы сначала определим следующую функцию:
#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
Далее мы будем использовать эту функцию для вычисления временной разницы в месяцах между столбцами start_date и end_date :
#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
В столбце month_difference отображается разница во времени (в месяцах) между столбцами start_date и end_date .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как преобразовать столбцы в DateTime в Pandas
Как преобразовать дату и время в дату в pandas
Как извлечь месяц из даты в Pandas