Uppdatera :börjar med pandas 0.15, to_sql
stöder att skriva NaN
värden (de kommer att skrivas som NULL
i databasen), så lösningen som beskrivs nedan borde inte behövas längre (se https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 kommer att släppas i oktober, och funktionen slås samman i utvecklingsversionen.
Detta beror förmodligen på NaN
värden i din tabell, och detta är en känd brist för närvarande att pandas sql-funktionerna inte hanterar NaNs bra (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Som en lösning för närvarande (för pandas versioner 0.14.1 och lägre) kan du manuellt konvertera nan
värden till Ingen med:
df2 = df.astype(object).where(pd.notnull(df), None)
och skriv sedan dataramen till sql. Detta konverterar dock alla kolumner till objekt dtype. På grund av detta måste du skapa databastabellen baserat på den ursprungliga dataramen. T.ex. om din första rad inte innehåller NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')