Solución:
Puedes usar el parse_dates
y dayfirst
argumentos de pd.read_csv
, consulte: los documentos de read_csv ()
df = pd.read_csv('myfile.csv', parse_dates=['Date'], dayfirst=True)
Esto leerá el Date
columna como valores de fecha y hora, tomando correctamente la primera parte de la entrada de fecha como el día. Tenga en cuenta que, en general, querrá que sus fechas se almacenen como objetos de fecha y hora.
Luego, si necesita generar las fechas como una cadena, puede llamar dt.strftime()
:
df['Date'].dt.strftime('%d/%m/%Y')
Cuando vuelva a usar esto:
df['Date'] = pd.to_datetime(df['Date'])
, vuelve al formato anterior.
No, no puede tener simultáneamente el formato de cadena de su elección y mantener su serie de tipo datetime
. Como se comentó aquí:
datetime
las series se almacenan internamente como números enteros. Cualquier representación de fecha legible por humanos es solo eso, una representación, no el entero subyacente. Para acceder a su formato personalizado, puede utilizar los métodos disponibles en Pandas. Incluso puede almacenar dicha representación de texto en unpd.Series
variable:formatted_dates = df['datetime'].dt.strftime('%m/%d/%Y')
los
dtype
deformatted_dates
estaránobject
, que indica que los elementos de su serie apuntan a tiempos de Python arbitrarios. En este caso, esos tipos arbitrarios son todas cadenas.Por último, te recomiendo encarecidamente que hagas no convertir un
datetime
series a cadenas hasta el último paso de su flujo de trabajo. Esto se debe a que tan pronto como lo haga, ya no podrá utilizar operaciones vectorizadas eficientes en una serie de este tipo.