Actualizar :comenzando con pandas 0.15, to_sql
admite escribir NaN
valores (se escribirán como NULL
en la base de datos), por lo que la solución que se describe a continuación ya no debería ser necesaria (ver https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 se lanzará el próximo octubre y la función se fusionará en la versión de desarrollo.
Esto probablemente se deba a NaN
valores en su tabla, y esta es una deficiencia conocida en el momento en que las funciones pandas sql no manejan bien los NaN (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Como solución en este momento (para pandas versiones 0.14.1 y anteriores), puede convertir manualmente el nan
valores a Ninguno con:
df2 = df.astype(object).where(pd.notnull(df), None)
y luego escriba el marco de datos en sql. Sin embargo, esto convierte todas las columnas en tipo de objeto. Debido a esto, debe crear la tabla de la base de datos en función del marco de datos original. Por ejemplo, si su primera fila no contiene NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')