Hai davvero ragione sul fatto che il campo datetime64 sta causando i problemi. Sqlite non ha un tipo di data e ora reale, ma usano tipi di testo o interi per rappresentare i tempi (vedi http:// www.sqlite.org/datatype3.html e http://www.sqlite.org/lang_datefunc.html ).
Quindi, a seconda di cosa vuoi fare, puoi prima convertire la tua colonna datetime in una stringa:
df['field2'] = df['field2'].apply(str)
o a un int (il numero di secondi da 1970-01-01 00:00:00 UTC):
df['field2'] = df['field2'].astype('int64')
e poi scrivi i tuoi dati su sqlite.
Note a margine:
- Che versione di Panda stai usando? Perché nella versione 0.13 (o inferiore) c'è un bug in
if_exists='replace'
implementazione, che è stata corretta in 0.13.1 (l'ultima versione stabile al momento) - Nei prossimi panda 0.14, ci sarà una nuova implementazione delle funzioni sql basate su sqlalchemy, e lì la conversione in una stringa avverrà automaticamente (quindi non errori più per i dati datetime64).