Aggiorna :a partire da panda 0.15, to_sql
supporta la scrittura di NaN
valori (saranno scritti come NULL
nel database), quindi la soluzione alternativa descritta di seguito non dovrebbe più essere necessaria (vedi https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 verrà rilasciato il prossimo ottobre e la funzionalità verrà incorporata nella versione di sviluppo.
Ciò è probabilmente dovuto a NaN
valori nella tua tabella, e questa è una lacuna nota al momento che le funzioni di panda sql non gestiscono bene i NaN (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Come soluzione alternativa in questo momento (per le versioni panda 0.14.1 e precedenti), puoi convertire manualmente il nan
valori su Nessuno con:
df2 = df.astype(object).where(pd.notnull(df), None)
e quindi scrivi il dataframe in sql. Questo tuttavia converte tutte le colonne in oggetto dtype. Per questo motivo, è necessario creare la tabella del database in base al dataframe originale. Ad esempio, se la tua prima riga non contiene NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')