Opdater :starter med pandas 0.15, to_sql
understøtter skrivning af NaN
værdier (de vil blive skrevet som NULL
i databasen), så løsningen beskrevet nedenfor burde ikke være nødvendig længere (se https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 frigives i næste oktober, og funktionen er fusioneret i udviklingsversionen.
Dette skyldes sandsynligvis NaN
værdier i din tabel, og det er en kendt mangel i øjeblikket, at pandas sql-funktionerne ikke håndterer NaN'er godt (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Som en løsning i øjeblikket (for pandaer version 0.14.1 og lavere), kan du manuelt konvertere nan
værdier til Ingen med:
df2 = df.astype(object).where(pd.notnull(df), None)
og skriv derefter datarammen til sql. Dette konverterer dog alle kolonner til objekt dtype. På grund af dette skal du oprette databasetabellen baseret på den originale dataramme. F.eks. hvis din første række ikke indeholder NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')