Tengo un marco de datos con una columna int de 4 dígitos:
df['time'].head(10)
0 1844
1 2151
2 1341
3 2252
4 2252
5 1216
6 2334
7 2247
8 2237
9 1651
Name: DepTime, dtype: int64
He verificado que max es 2400 y min es 1. Me gustaría convertir esto en una columna de fecha y hora con horas y minutos. ¿Como podría hacerlo?
4 respuestas
Si estos son 4 dígitos, timedelta
es más apropiado que datetime
:
pd.to_timedelta(df['time']//100 * 60 + df['time'] % 100, unit='m')
Salida:
0 18:44:00
1 21:51:00
2 13:41:00
3 22:52:00
4 22:52:00
5 12:16:00
6 23:34:00
7 22:47:00
8 22:37:00
9 16:51:00
Name: time, dtype: timedelta64[ns]
Si tiene otra columna date
, puede fusionar date
y time
para crear una columna datetime
.
Si desea una salida en formato de cadena de HH:MM
, solo necesita convertir la columna en cadena y usar str.slice_replace
con :
( Nota : cambio su muestra para incluir el caso de un entero de 3 dígitos )
Muestra df:
time
0 1844
1 2151
2 1341
3 2252
4 2252
5 216
6 2334
7 2247
8 2237
9 1651
s = df['time'].map('{0:04}'.format)
out = s.str.slice_replace(2,2,':')
Out[666]:
0 18:44
1 21:51
2 13:41
3 22:52
4 22:52
5 02:16
6 23:34
7 22:47
8 22:37
9 16:51
Name: time, dtype: object
O dividir y concat con :
s = df['time'].map('{0:04}'.format)
out = s.str[:2] + ':' + s.str[2:]
Out[665]:
0 18:44
1 21:51
2 13:41
3 22:52
4 22:52
5 02:16
6 23:34
7 22:47
8 22:37
9 16:51
Name: time, dtype: object
IIUC
pd.to_datetime(df.time.astype(str),format='%H%M').dt.strftime('%H:%M')
Out[324]:
0 21:51
1 13:41
2 22:52
3 22:52
4 12:16
5 23:34
6 22:47
7 22:37
8 16:51
Name: col2, dtype: object
¡Prueba esto!
df['conversion'] = (df['time'].apply(lambda x: pd.to_datetime(x, format = '%H%M')).dt.strftime('%H:%M'))
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.