У меня огромный массив данных со многими столбцами, многие из которых имеют тип datetime.datetime. Проблема в том, что многие из них также имеют смешанные типы, в том числе, например, datetime.datetimeзначения и Noneзначения (и, возможно, другие недопустимые значения):
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
Следовательно, приводя к objectстолбцу типа. Это можно решить с помощью df.colx.fillna(pd.NaT). Проблема в том, что датафрейм слишком велик для поиска отдельных столбцов.
Другой подход заключается в использовании pd.to_datetime(col, errors='coerce'), однако это приведёт ко datetimeмногим столбцам, которые содержат числовые значения.
Я мог бы также сделать df.fillna(float('nan'), inplace=True), хотя столбцы, содержащие даты, все objectеще имеют тип, и все еще будут иметь ту же проблему.
Какой подход я мог бы использовать для приведения к datetime тех столбцов, значения которых действительно содержат datetimeзначения, но также могут содержать Noneи, возможно, некоторые недопустимые значения (упомяну, так как в противном случае в выражении a pd.to_datetimeв выражении try/ except)? Что-то вроде гибкой версииpd.to_datetime(col)
Noneв ваших столбцах фактические Noneили строковые представители этого?
Noneне строки. Потенциально могут быть неправильные значения также ... @erfan
datetimeи valuesв нем?
datetime.datetimeилиpandas._libs.tslibs.timestamps.Timestamp? В первом случае я бы рекомендовал изменить созданный тип datetime на тип, которыйpandasлучше обрабатывает.