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