You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含NaN的Pandas DataFrame存入SQL Server nvarchar列出现n.n问题

问题成因分析
  • Pandas里的NaN是数值类型的缺失标记,并非字符串类型的合法空值。当你的validation字符串列混入NaN时,Pandas不会自动将其映射为SQL的NULL,而是把NaN转换成了字符串'nan'。
  • pyodbc执行插入操作时,会直接把这个'nan'字符串写入SQL Server的nvarchar(max)列。你看到的n.n是数据展示工具的渲染异常,实际存入的是'nan'字符串。
  • 其他可空列无此问题,是因为那些列的缺失值类型和对应SQL列类型匹配(比如数值列的NaN会被pyodbc正确转为SQL的NULL),但字符串列的NaN因类型不兼容,被当作普通字符串处理了。

补充验证

你可以在插入前执行以下代码查看validation列的实际值类型:

print(df['validation'].apply(type))

会发现NaN对应的类型是float而非str,这就是问题的根源。


内容的提问来源于stack exchange,提问作者Nandha Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:44:55