Bạn thực sự chính xác rằng trường datetime64 đang gây ra sự cố. Sqlite không có kiểu ngày giờ thực, nhưng chúng sử dụng kiểu văn bản hoặc số nguyên để biểu thị thời gian (xem http:// www.sqlite.org/datatype3.html và http://www.sqlite.org/lang_datefunc.html ).
Vì vậy, tùy thuộc vào những gì bạn muốn làm, trước tiên, bạn có thể chuyển đổi cột ngày giờ thành một chuỗi:
df['field2'] = df['field2'].apply(str)
hoặc đến một int (số giây kể từ 1970-01-01 00:00:00 UTC):
df['field2'] = df['field2'].astype('int64')
và sau đó ghi dữ liệu của bạn vào sqlite.
Chú thích bên lề:
- Bạn đang sử dụng phiên bản gấu trúc nào? Vì trong phiên bản 0.13 (hoặc thấp hơn) có một lỗi trong
if_exists='replace'
triển khai, được khắc phục trong 0.13.1 (bản phát hành ổn định mới nhất tại thời điểm hiện tại) - Trong pandas 0.14 sắp tới, sẽ có một triển khai mới của các hàm sql dựa trên sqlalchemy và ở đó, quá trình chuyển đổi thành một chuỗi sẽ tự động xảy ra (vì vậy, dữ liệu datetime64 sẽ không xảy ra lỗi nữa).