Pregunta Calcule Pandas DataFrame Diferencia de tiempo entre dos columnas en horas y minutos


Tengo dos columnas desde y hasta la fecha en un marco de datos

cuando intento agregar nueva columna diff para encontrar la diferencia entre dos fechas usando

df['diff'] = df['todate'] - df['fromdate']

Obtengo la columna de diferencia en días si es más de 24 horas.

2014-01-24 13:03:12.050000,2014-01-26 23:41:21.870000,"2 days, 10:38:09.820000"
2014-01-27 11:57:18.240000,2014-01-27 15:38:22.540000,03:41:04.300000
2014-01-23 10:07:47.660000,2014-01-23 18:50:41.420000,08:42:53.760000

¿Cómo convierto mis resultados solo en horas y minutos ignorando días e incluso segundos?


34
2018-04-07 21:49


origen


Respuestas:


La diferencia de fecha y hora de Pandas devuelve un objeto datetime.timedelta. Esto se puede convertir fácilmente en horas usando el método * as_type *, como

import pandas
df = pandas.DataFrame(columns=['to','fr','ans'])
df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')]
df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')]
(df.fr-df.to).astype('timedelta64[h]')

ceder,

0    58
1     3
2     8
dtype: float64

54
2018-04-07 23:01



Esto me estaba poniendo loco como el .astype() la solución anterior no funcionó para mí. Pero encontré otra manera. No lo ha cronometrado ni nada, pero podría funcionar para otros por ahí:

t1 = pd.to_datetime('1/1/2015 01:00')
t2 = pd.to_datetime('1/1/2015 03:30')

print pd.Timedelta(t2 - t1).seconds / 3600.0

... si quieres horas. O:

print pd.Timedelta(t2 - t1).seconds / 60.0

... si quieres minutos.


19
2017-12-27 06:52