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')