sql >> Databasteknik >  >> RDS >> Mysql

Python Pandas skriver till sql med NaN-värden

Uppdatera :börjar med pandas 0.15, to_sql stöder att skriva NaN värden (de kommer att skrivas som NULL i databasen), så lösningen som beskrivs nedan borde inte behövas längre (se https:// github.com/pydata/pandas/pull/8208 ).
Pandas 0.15 kommer att släppas i oktober, och funktionen slås samman i utvecklingsversionen.

Detta beror förmodligen på NaN värden i din tabell, och detta är en känd brist för närvarande att pandas sql-funktionerna inte hanterar NaNs bra (https://github.com/pydata/pandas/issues/2754 , https://github.com/pydata/pandas/issues/4199 )

Som en lösning för närvarande (för pandas versioner 0.14.1 och lägre) kan du manuellt konvertera nan värden till Ingen med:

df2 = df.astype(object).where(pd.notnull(df), None)

och skriv sedan dataramen till sql. Detta konverterar dock alla kolumner till objekt dtype. På grund av detta måste du skapa databastabellen baserat på den ursprungliga dataramen. T.ex. om din första rad inte innehåller NaN s:

df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')


  1. SQL Server-inställning – allt handlar om mätning

  2. Exportera lista med vackra permalänkar och inläggstitel

  3. Oracle PL/SQL:DBMS_SCHEDULER.CREATE_JOB Exempel

  4. Codeigniter dynamisk databasanslutning