更新 :从pandas
0.15开始,
to_sql支持写入
NaN值(它们将
NULL在数据库中写入),因此不再需要下面描述的解决方法(请参阅https://github.com/pydata/pandas/pull/8208)。
熊猫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。因此,您必须基于原始数据框创建数据库表。例如,如果您的第一行不包含
NaNs:
df[:1].to_sql('table_name', con)df2[1:].to_sql('table_name', con, if_exists='append')


