La diferencia entre dos fechas u horas se representa como un objeto timedelta. La duración describe la diferencia entre dos fechas, fechas y horas u ocurrencias de tiempo, mientras que el delta significa un promedio de la diferencia. Uno puede estimar el tiempo en el futuro y el pasado usando timedelta. Esta diferencia entre dos fechas cuando se calcula en términos de meses, se denomina delta de tiempo en meses. Demostremos algunas formas de calcular el tiempo delta en meses en pandas.
Método 1: Calcular Timedelta usando la función pandas.Series.dt.to_period()
función pandas.Series.dt.to_period():
Sintaxis:
Series.dt.to_period(*args, **kwargs)
convierte la array de fecha y hora en una array de período.
parámetros :
freq= valor opcional, string de desplazamiento u objeto de desplazamiento
En este ejemplo, leemos time.csv y convertimos los valores de cada columna a DateTime. después de convertir columnas a DateTime, usamos pandas.Series.dt.to_period() para calcular el delta de tiempo en meses. La string ‘M’ en la función to_period() simboliza los meses. Se devuelven los objetos de fin de mes.
CSV utilizado:
Python3
# import packages and libraries import pandas as pd # reading the csv file data = pd.read_csv('time.csv') # converting columns to datetime data['start_date'] = pd.to_datetime(data['start_date']) data['end_date'] = pd.to_datetime(data['end_date']) # calculating time delta in months data['time_delta_months'] = data['end_date'].dt.to_period('M') - \ data['start_date'].dt.to_period('M') print(data)
Producción:
Método 2: Calcular Timedelta usando meses en entero
En el método anterior, se devuelve el objeto Monthends. Si queremos que sea un número entero, tenemos que convertirlo usando la función astype() o usando view(dtype=’int64′).
Python3
# import packages and libraries import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # reading the csv file data = pd.read_csv('time.csv') # converting columns to datetime data['start_date'] = pd.to_datetime(data['start_date']) data['end_date'] = pd.to_datetime(data['end_date']) # calculating time delta in months data['time_delta_months'] = data['end_date'].dt.to_period('M').astype(int) - \ data['start_date'].dt.to_period('M').astype(int) # print(data) print(data)
Producción:
Ejemplo 2: Usar .view(dtype=’int64′) para convertir a números enteros
Python3
# import packages and libraries import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # reading the csv file data = pd.read_csv('time.csv') # converting columns to datetime data['start_date'] = pd.to_datetime(data['start_date']) data['end_date'] = pd.to_datetime(data['end_date']) # calculating time delta in months data['time_delta_months'] = data['end_date'].dt.to_period('M').view(dtype='int64') -\ data['start_date'].dt.to_period('M').view(dtype='int64') # print(data) print(data)
Producción:
Método 3: Calcular Timedelta utilizando una función definida por el usuario
En lugar de usar funciones integradas, podemos usar nuestra propia función definida por el usuario pd. La función de marca de tiempo() convierte el objeto de tiempo tipo DateTime, str, int o flotante en marca de tiempo. Luego extraemos los valores de año y mes de las marcas de tiempo. como cada año tiene 12 meses multiplicamos 12 con la diferencia de año y sumamos la diferencia de mes.
Python3
# import packages and libraries import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # creating a dataframe data = pd.DataFrame({'startdate': [pd.Timestamp('20181211'), pd.Timestamp('20180701')], 'enddate': [pd.Timestamp('20190612'), pd.Timestamp('20190712')]}) def time_delta_month(end, start): return 12 * (end.dt.year - start.dt.year) \ + (end.dt.month - start.dt.month) print(time_delta_month(data['enddate'], data['startdate']))
Producción:
0 6 1 12 dtype: int64
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA