Quiero convertir una cadena de un dataframe a datetime.
dfx = df.ix[:,'a'] dfx = pd.to_datetime(dfx)
Pero da el siguiente error:
ValueError: el día está fuera del rango mensual
¿Alguien puede ayudar?
Tal vez ayude a agregar el parámetro dayfirst=True
to to_datetime
, si el formato de datetime es 30-01-2016
:
dfx = df.ix[:,'a'] dfx = pd.to_datetime(dfx, dayfirst=True)
Más universal es el uso de format
parámetro con errors='coerce'
para reemplazar valores con otro format
a NaN
:
dfx = '30-01-2016' dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce') print (dfx) 2016-01-30 00:00:00
Muestra:
dfx = pd.Series(['30-01-2016', '15-09-2015', '40-09-2016']) print (dfx) 0 30-01-2016 1 15-09-2015 2 40-09-2016 dtype: object dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce') print (dfx) 0 2016-01-30 1 2015-09-15 2 NaT dtype: datetime64[ns]
Si el formato es estándar (p. Ej., 01-30-2016
o 01-30-2016
), agregue solo los errors='coerce'
:
dfx = pd.Series(['01-30-2016', '09-15-2015', '09-40-2016']) print (dfx) 0 01-30-2016 1 09-15-2015 2 09-40-2016 dtype: object dfx = pd.to_datetime(dfx, errors='coerce') print (dfx) 0 2016-01-30 1 2015-09-15 2 NaT dtype: datetime64[ns]