Tengo un marco de datos de pandas con las siguientes columnas;
Date Time
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00
¿Cómo combino datos ['Fecha'] y datos ['Hora'] para obtener lo siguiente? ¿Hay alguna forma de hacerlo usando pd.to_datetime?
Date
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00

Respuestas:
Vale la pena mencionar que es posible que haya podido leer esto directamente, por ejemplo, si estaba usando
read_csvusingparse_dates=[['Date', 'Time']].Suponiendo que estas son solo cadenas, simplemente puede agregarlas (con un espacio), lo que le permite aplicar
to_datetime:Nota: sorprendentemente (para mí), esto funciona bien con los NaN convertidos a NaT, pero vale la pena preocuparse de que la conversión (quizás usando el
raiseargumento).fuente
parse_dates=[['Start date', 'Start time'], ['End date', 'End time']]). Pandas <3La respuesta aceptada funciona para columnas que son de tipo de datos
string. Para completar: me encuentro con esta pregunta al buscar cómo hacer esto cuando las columnas son de tipos de datos: fecha y hora.fuente
timed, en pandas. Tengo más bien unatimedelta(y unadatetime), en cuyo caso solo necesita agregarlas, vea mi respuestapd.datetimese ha desaprobado y se sugiere simplemente importar explícitamente eldatetimemódulo.Puede usar esto para combinar fecha y hora en la misma columna de marco de datos.
Leyendo el archivo .csv con columnas fusionadas Date_Time:
Puede usar esta línea para mantener las otras dos columnas también.
fuente
date_parser, por ejemploparser = lambda date: pd.datetime.strptime(date, '%d-%b-%y %H:%M:%S')Puede convertir las columnas si los tipos son diferentes (fecha y hora y marca de tiempo o str) y usar to_datetime:
Resultado:
Mejor,
fuente
No tengo suficiente reputación para comentar sobre jka.ne, así que:
Tuve que modificar la línea de jka.ne para que funcionara:
Esto podría ayudar a otros.
Además, he probado un enfoque diferente, usando en
replacelugar decombine:que en el caso del OP sería:
He cronometrado ambos enfoques para un conjunto de datos relativamente grande (> 500.000 filas), y ambos tienen tiempos de ejecución similares, pero el uso
combinees más rápido (59 segundosreplacefrente a 50 segundoscombine).fuente
La respuesta realmente depende de cuáles sean sus tipos de columna . En mi caso, tuve
datetimeytimedelta.Si este es tu caso, solo necesitas agregar las columnas:
fuente
datetimeytimedelta. La respuesta principal de alguna manera descubrió que las columnas eran cadenas, o tal vez fue solo la respuesta que funcionó para el que publicó la pregunta.También puede convertir a
datetimesin concatenación de cadenas, combinando objetosdatetimeytimedelta. Combinado conpd.DataFrame.pop, puede eliminar la serie fuente simultáneamente:fuente
Primero asegúrese de tener los tipos de datos correctos:
Entonces puedes combinarlos fácilmente:
fuente
Usa la
combinefunción:fuente
Mi conjunto de datos tuvo datos de resolución de 1 segundo durante unos días y el análisis con los métodos sugeridos aquí fue muy lento. En su lugar usé:
Tenga en cuenta que el uso de
cache=Truehace que analizar las fechas sea muy eficiente, ya que solo hay un par de fechas únicas en mis archivos, lo que no es cierto para una columna de fecha y hora combinadas.fuente
DATOS:
<TICKER>, <PER>, <DATE>, <TIME> , <OPEN>, <HIGH>, <LOW>, <CERRAR>, <VOL> SPFB.RTS, 1, 20190103,100100 , 106580.0000000,107260.0000000,106570.0000000 , 107230.0000000,3726
CÓDIGO:
fuente