Eu tenho um enorme quadro de dados com muitas colunas, muitas das quais são do tipo datetime.datetime. O problema é que muitos também têm tipos mistos, incluindo, por exemplo, datetime.datetimevalores e Nonevalores (e potencialmente outros valores invá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
Portanto, resultando em uma objectcoluna de tipo. Isso pode ser resolvido com df.colx.fillna(pd.NaT). O problema é que o quadro de dados é muito grande para procurar colunas individuais.
Outra abordagem é usar pd.to_datetime(col, errors='coerce'), no entanto, isso será convertido para datetimemuitas colunas que contêm valores numéricos.
Eu também poderia fazer df.fillna(float('nan'), inplace=True), embora as colunas que contêm datas ainda sejam do objecttipo e ainda tenham o mesmo problema.
Que abordagem que eu poderia seguir para elenco para datetime aquelas colunas cujos valores realmente conter datetimevalores, mas também pode conter None, e eventualmente alguns valores inválidos (mencionando pois caso contrário um pd.to_datetimeem um try/ exceptcláusula faria)? Algo como uma versão flexível dopd.to_datetime(col)
Nonecolunas são reais Noneou de string?
None, não cordas. Potencialmente pode haver valores errados também ... @erfan
datetimee contém values?
datetime.datetimeoupandas._libs.tslibs.timestamps.Timestamp? Se o primeiro, minha recomendação seria alterar o que criou a data e hora para o tipo quepandaslida um pouco melhor.