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.datetime
Werte und None
Werte (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 object
Typenspalte. 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 datetime
viele 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 object
Typ 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 None
und möglicherweise einige ungültige Werte enthalten könnten, auf datetime umzuwandeln (da ansonsten a pd.to_datetime
in a erwähnt wird)try
/ except
-Klausel dies tun würde)? So etwas wie eine flexible Version vonpd.to_datetime(col)
None
in Ihren Spalten tatsächlichen None
oder Zeichenfolgenvertreter davon?
None
keine Schnur. Möglicherweise kann es auch falsche Werte geben ... @erfan
datetime
und values
darin enthalten ist?
datetime.datetime
oderpandas._libs.tslibs.timestamps.Timestamp
? In diesem Fall würde ich empfehlen, die Datums- und Uhrzeitangabe auf den Typ zu ändern, derpandas
etwas besser funktioniert .