Ich habe einen riesigen Datenrahmen mit vielen Spalten, von denen viele vom Typ sind datetime.datetime. Das Problem ist, dass viele auch gemischte Typen haben, einschließlich zum Beispiel datetime.datetimeWerte und NoneWerte (und möglicherweise andere ungültige Werte):
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
Daraus ergibt sich eine objectTypenspalte. Dies kann mit gelöst werden df.colx.fillna(pd.NaT). Das Problem ist, dass der Datenrahmen zu groß ist, um nach einzelnen Spalten zu suchen.
Ein anderer Ansatz ist die Verwendung pd.to_datetime(col, errors='coerce'), dies wird jedoch in datetimeviele Spalten umgewandelt, die numerische Werte enthalten.
Ich könnte es auch tun df.fillna(float('nan'), inplace=True), obwohl die Spalten, die Datumsangaben enthalten, immer noch vom objectTyp sind und immer noch das gleiche Problem haben würden.
Welchen Ansatz könnte ich verfolgen, um die Spalten, deren Werte tatsächlich Werte enthalten datetime, aber auch Noneund möglicherweise einige ungültige Werte enthalten könnten, auf datetime umzuwandeln (da ansonsten a pd.to_datetimein a erwähnt wird)try / except-Klausel dies tun würde)? So etwas wie eine flexible Version vonpd.to_datetime(col)
Nonein Ihren Spalten tatsächlichen Noneoder Zeichenfolgenvertreter davon?
Nonekeine Schnur. Möglicherweise kann es auch falsche Werte geben ... @erfan
datetimeund valuesdarin enthalten ist?
datetime.datetimeoderpandas._libs.tslibs.timestamps.Timestamp? In diesem Fall würde ich empfehlen, die Datums- und Uhrzeitangabe auf den Typ zu ändern, derpandasetwas besser funktioniert .