Tôi có một khung dữ liệu khổng lồ với nhiều cột, nhiều cột có kiểu datetime.datetime
. Vấn đề là nhiều người cũng có các loại hỗn hợp, bao gồm các datetime.datetime
giá trị và giá trị ví dụ None
(và có thể có các giá trị không hợp lệ khác):
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
Do đó dẫn đến một object
cột loại. Điều này có thể được giải quyết với df.colx.fillna(pd.NaT)
. Vấn đề là khung dữ liệu quá lớn để tìm kiếm các cột riêng lẻ.
Một cách tiếp cận khác là sử dụng pd.to_datetime(col, errors='coerce')
, tuy nhiên điều này sẽ truyền tới datetime
nhiều cột có chứa các giá trị số.
Tôi cũng có thể làm df.fillna(float('nan'), inplace=True)
, mặc dù các cột chứa ngày vẫn thuộc object
loại và vẫn có cùng một vấn đề.
Cách tiếp cận nào tôi có thể làm theo để truyền tới datetime những cột có giá trị thực sự chứa datetime
giá trị, nhưng cũng có thể chứa None
và có khả năng một số giá trị không hợp lệ (đề cập đến nếu không thì pd.to_datetime
trong mệnh đề try
/ except
sẽ làm gì)? Một cái gì đó giống như một phiên bản linh hoạt củapd.to_datetime(col)
None
trong các cột của bạn, None
đại diện thực tế hoặc chuỗi của nó?
None
, không phải chuỗi. Có khả năng cũng có thể có các giá trị sai ... @erfan
datetime
và values
trong đó?
datetime.datetime
haypandas._libs.tslibs.timestamps.Timestamp
? Nếu trước đây khuyến nghị của tôi sẽ là thay đổi bất cứ điều gì đã tạo ra datetime thành loạipandas
xử lý tốt hơn một chút.