Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Python Pandy zapisują do sql z wartościami NaN

Aktualizacja :zaczynając od pandy 0.15, to_sql obsługuje pisanie NaN wartości (zostaną zapisane jako NULL w bazie danych), więc opisane poniżej obejście nie powinno już być potrzebne (patrz https:// github.com/pydata/pandas/pull/8208 ).
Pandy 0.15 zostaną wydane w październiku, a funkcja zostanie połączona z wersją rozwojową.

Jest to prawdopodobnie spowodowane NaN wartości w Twojej tabeli i jest to znany mankament w chwili, gdy funkcje sql pandy nie obsługują dobrze NaNs (https://github.com/pydata/pandas/issues/2754 , https://github.com/pydata/pandas/issues/4199 )

Jako obejście w tej chwili (dla pand w wersji 0.14.1 i niższych) możesz ręcznie przekonwertować nan wartości na Brak z:

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

a następnie zapisz ramkę danych do sql. To jednak konwertuje wszystkie kolumny do dtype obiektu. Z tego powodu musisz utworzyć tabelę bazy danych na podstawie oryginalnej ramki danych. Np. jeśli pierwszy wiersz nie zawiera NaN s:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja LEFT() w MySQL

  2. MySQL:Tworzenie bazy danych jak?

  3. Dodaj nową kolumnę do bazy danych wordpress

  4. Jak ustawić sql-mode=NO_ENGINE_SUBSTITUTION na stałe w MySQL my.cnf

  5. Jak zweryfikować dane logowania użytkownika w Androidzie za pomocą PHP, MySql za pomocą json