Mysql
 sql >> база данни >  >> RDS >> Mysql

Python Pandas записват в sql с NaN стойности

Актуализиране :започвайки с 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')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсете текст в полета във всяка таблица на MySQL база данни

  2. PHP:MySQL заявка дублира актуализация без причина

  3. Форматиране на SQL времеви печат с PHP

  4. Как да получите всички стойности в колона с помощта на PHP?

  5. Научете за разрешенията на ниво таблица на MySQL