Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Python Pandas menulis ke sql dengan nilai NaN

Perbarui :dimulai dengan pandas 0.15, to_sql mendukung penulisan NaN nilai (mereka akan ditulis sebagai NULL dalam database), sehingga solusi yang dijelaskan di bawah tidak diperlukan lagi (lihat https:// github.com/pydata/pandas/pull/8208 ).
Panda 0.15 akan dirilis pada bulan Oktober mendatang, dan fitur tersebut digabungkan dalam versi pengembangan.

Ini mungkin karena NaN nilai di tabel Anda, dan ini adalah kekurangan yang diketahui saat ini karena fungsi pandas sql tidak menangani NaN dengan baik (https://github.com/pydata/pandas/issues/2754 , https://github.com/pydata/pandas/issues/4199 )

Sebagai solusi saat ini (untuk pandas versi 0.14.1 dan yang lebih rendah), Anda dapat mengonversi nan secara manual nilai ke Tidak Ada dengan:

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

dan kemudian menulis kerangka data ke sql. Namun ini mengubah semua kolom menjadi objek dtype. Karena itu, Anda harus membuat tabel database berdasarkan kerangka data asli. Misalnya jika baris pertama Anda tidak mengandung 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. Bagaimana cara membuat driver Qt mysql di windows?

  2. Python 3.7, Roda pembuatan yang gagal untuk MySql-Python

  3. MySQL ON DUPLICATE KEY UPDATE untuk memasukkan beberapa baris dalam satu permintaan

  4. Pembaruan H2 dengan bergabung

  5. Periksa Kolom/Kunci Ada?