更新 :パンダ0.15以降、to_sql
NaN
の記述をサポート 値(NULL
として記述されます データベース内)、したがって、以下で説明する回避策はもう必要ありません( https://を参照してください。 github.com/pydata/pandas/pull/8208
)。
Pandas 0.15は来たる10月にリリースされ、この機能は開発バージョンに統合されます。
これはおそらくNaN
が原因です テーブル内の値。これは、パンダのSQL関数がNaNを適切に処理しないという現時点での既知の欠点です( https://github.com/pydata/pandas/issues/2754
、 https://github.com/pydata/pandas/issues/4199
)
現時点での回避策として(パンダバージョン0.14.1以下の場合)、nan
を手動で変換できます。 値をNoneに変更:
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')