Bijwerken :beginnend met panda's 0.15, to_sql
ondersteunt het schrijven van NaN
waarden (ze worden geschreven als NULL
in de database), dus de hieronder beschreven tijdelijke oplossing zou niet meer nodig moeten zijn (zie https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 wordt in oktober uitgebracht en de functie is samengevoegd in de ontwikkelingsversie.
Dit komt waarschijnlijk door NaN
waarden in uw tabel, en dit is een bekende tekortkoming op het moment dat de panda's sql-functies NaN's niet goed verwerken (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Als tijdelijke oplossing (voor panda's versie 0.14.1 en lager), kun je de nan
handmatig converteren waarden op Geen met:
df2 = df.astype(object).where(pd.notnull(df), None)
en schrijf vervolgens het dataframe naar sql. Dit converteert echter alle kolommen naar object dtype. Daarom moet u de databasetabel maken op basis van het originele dataframe. Bijvoorbeeld als uw eerste rij geen NaN
. bevat s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')