У меня огромный массив данных со многими столбцами, многие из которых имеют тип 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
лучше обрабатывает.