Aktualizovat :počínaje pandas 0.15, to_sql
podporuje zápis NaN
hodnoty (budou zapsány jako NULL
v databázi), takže řešení popsané níže by již nemělo být potřeba (viz https:// github.com/pydata/pandas/pull/8208
).
Pandy 0.15 budou vydány v říjnu a tato funkce je začleněna do vývojové verze.
To je pravděpodobně způsobeno NaN
hodnoty ve vaší tabulce, a to je v tuto chvíli známý nedostatek, že funkce pandas sql špatně zpracovávají NaN (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Jako řešení v tuto chvíli (pro pandy verze 0.14.1 a nižší) můžete ručně převést nan
hodnoty na Žádný s:
df2 = df.astype(object).where(pd.notnull(df), None)
a poté zapište dataframe do sql. To však převede všechny sloupce na objekt dtype. Z tohoto důvodu musíte vytvořit databázovou tabulku na základě původního datového rámce. Např. pokud váš první řádek neobsahuje NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')