ValueError: el día está fuera del rango mensual

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]