Mam ogromną ramkę danych z wieloma kolumnami, z których wiele jest typu datetime.datetime. Problem polega na tym, że wiele z nich ma również typy mieszane, w tym na przykład datetime.datetimewartości i Nonewartości (i potencjalnie inne nieprawidłowe wartości):
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
W rezultacie powstaje objectkolumna typu. Można to rozwiązać za pomocą df.colx.fillna(pd.NaT). Problem polega na tym, że ramka danych jest zbyt duża, aby wyszukiwać pojedyncze kolumny.
Można też zastosować inne podejście pd.to_datetime(col, errors='coerce'), ale spowoduje to rzutowanie na datetimewiele kolumn zawierających wartości liczbowe.
Mógłbym to zrobić df.fillna(float('nan'), inplace=True), chociaż kolumny zawierające daty są nadal objecttypu i nadal miałyby ten sam problem.
Co mogę śledzić podejście do obsady do datetime te kolumny, których wartości naprawdę zawierają datetimewartości, ale może też zawierać Nonei potencjalnie kilka nieprawidłowych wartości (podając ponieważ w przeciwnym razie pd.to_datetimew sposób try/ exceptklauzula zrobi)? Coś w rodzaju elastycznej wersjipd.to_datetime(col)
Nonew Twoich kolumnach znajdują się rzeczywiste Noneczy łańcuchowe reprezentacje tego?
Nonesznurkiem. Potencjalnie mogą być również błędne wartości ... @erfan
datetimei valuesw nim?
datetime.datetimelubpandas._libs.tslibs.timestamps.Timestamp? Jeśli to pierwsze, zalecałbym zmianę cokolwiek, co stworzyło datetime, na typ, którypandasradzi sobie nieco lepiej.