Актуализиране :започвайки с pandas 0.15, to_sql
поддържа писане на NaN
стойности (те ще бъдат записани като NULL
в базата данни), така че заобикалянето, описано по-долу, вече не трябва да е необходимо (вижте https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 ще излезе през идния октомври и функцията е обединена във версията за разработка.
Това вероятно се дължи на NaN
стойности във вашата таблица и това е известен недостатък в момента, че функциите pandas sql не се справят добре с NaNs (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Като заобиколно решение в този момент (за pandas версии 0.14.1 и по-ниски) можете ръчно да конвертирате nan
стойности на Няма с:
df2 = df.astype(object).where(pd.notnull(df), None)
и след това напишете рамката от данни в sql. Това обаче преобразува всички колони в обект dtype. Поради това трябва да създадете таблицата на базата данни въз основа на оригиналната рамка с данни. Например ако първият ви ред не съдържа NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')