Tengo un gran marco de datos con muchas columnas, muchas de las cuales son de tipo datetime.datetime. El problema es que muchos también tienen tipos mixtos, que incluyen, por ejemplo, datetime.datetimevalores y Nonevalores (y potencialmente otros valores no válidos):
0 2017-07-06 00:00:00
1 2018-02-27 21:30:05
2 2017-04-12 00:00:00
3 2017-05-21 22:05:00
4 2018-01-22 00:00:00
...
352867 2019-10-04 00:00:00
352868 None
352869 some_string
Name: colx, Length: 352872, dtype: object
Por lo tanto, resulta en una objectcolumna de tipo. Esto se puede resolver con df.colx.fillna(pd.NaT). El problema es que el marco de datos es demasiado grande para buscar columnas individuales.
Otro enfoque es usar pd.to_datetime(col, errors='coerce'), sin embargo, esto se convertirá en datetimemuchas columnas que contienen valores numéricos.
También podría hacerlo df.fillna(float('nan'), inplace=True), aunque las columnas que contienen fechas todavía son de objecttipo, y todavía tendrían el mismo problema.
¿Qué enfoque podría seguir al elenco de fecha y hora a las columnas cuyos valores realmente no contener datetimevalores, sino que también podría contener None, y posiblemente algunos valores no válidos (mencionando ya que de otra una pd.to_datetimeen un try/ exceptcláusula harían)? Algo así como una versión flexible depd.to_datetime(col)
Noneen sus columnas, Nonerepresentativos reales o de cadena?
None, no una cadena. Potencialmente puede haber valores erróneos también ... @erfan
datetimey valuesen ella?
datetime.datetimeopandas._libs.tslibs.timestamps.Timestamp? Si lo primero, mi recomendación sería cambiar lo que haya creado la fecha y hora al tipo que sepandasmaneje un poco mejor.