Aktualisieren :Beginnend mit Pandas 0.15, to_sql
unterstützt das Schreiben von NaN
Werte (sie werden als NULL
geschrieben in der Datenbank), sodass der unten beschriebene Workaround nicht mehr benötigt werden sollte (siehe https:// github.com/pydata/pandas/pull/8208
).
Pandas 0.15 wird im kommenden Oktober veröffentlicht und die Funktion wird in die Entwicklungsversion integriert.
Das liegt wahrscheinlich an NaN
Werte in Ihrer Tabelle, und dies ist im Moment ein bekanntes Manko, dass die Pandas-SQL-Funktionen NaNs nicht gut verarbeiten (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Als Problemumgehung können Sie derzeit (für Pandas-Versionen 0.14.1 und niedriger) den nan
manuell konvertieren Werte auf None mit:
df2 = df.astype(object).where(pd.notnull(df), None)
und schreiben Sie dann den Datenrahmen in SQL. Dies konvertiert jedoch alle Spalten in Objekt-dtype. Aus diesem Grund müssen Sie die Datenbanktabelle basierend auf dem ursprünglichen Datenrahmen erstellen. ZB wenn Ihre erste Zeile NaN
nicht enthält s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')