O código a seguir funcionou bem:
import pandas as pd
import numpy as np
df = pd.DataFrame({'from_date': ['01-10-2003', '15-12-2004', '01-08-2012', '09-07-2001'],
'to_date': ['01-11-2003', '15-12-2006', '01-09-2012', '09-12-2001']})
df['from_date'] = pd.to_datetime(df['from_date'], format='%d-%m-%Y')
df['to_date'] = pd.to_datetime(df['to_date'], format='%d-%m-%Y')
df['Months'] = (df['to_date']-df['from_date'])/np.timedelta64(1, 'M')
df
Após a atualização dos pacotes ocorre o seguinte erro:
ValueError: Unit M is not supported. Only unambiguous timedelta values durations are supported. Allowed units are 'W', 'D', 'h', 'm', 's', 'ms', 'us', 'ns'
Pandas = 2.1.4, Numpy = 1.26.2
Como posso agora calcular a diferença do mês entre duas datas?
Se você quiser calcular uma diferença exata, converta
to_period
:Resultado (em comparação com o uso aproximado de 30 dias para um mês):
Aparentemente, 'M' in
np.timedelta64(1, 'M')
não funciona mais. Pode-se usar a diferença de dias 'D' e dividir por 30:ou pode usar%: