У мене величезна рамка даних з багатьма колонками, багато з яких мають тип 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значення, але можуть також містити Noneй потенційно деякі недійсні значення (згадуючи про те, оскільки в іншому випадку це було б pd.to_datetimeу try/ / exceptпункті)? Щось на кшталт гнучкої версіїpd.to_datetime(col)
Noneу ваших стовпцях фактичними Noneчи рядковими його представниками?
None, а не струнні. Потенційно можуть бути і неправильні значення також ... @erfan
datetimeі valuesв ньому?
datetime.datetimeабоpandas._libs.tslibs.timestamps.Timestamp? Якщо попередня моя рекомендація - змінити будь-який створений час дати на тип, якийpandasобробляє трохи краще.