含NaN字段的Pandas DataFrame序列化返回响应报错求助
解决DataFrame含NaN字段的接口响应序列化问题
问题核心是JSON规范不支持NaN值,导致序列化报错。以下两种方法可在保留原字段结构的前提下,将NaN转为JSON兼容的null:
方案一:替换NaN为None后转字典列表
直接修改context的生成逻辑,用pandas替换NaN为Python的None(JSON序列化时会转为null):
import pandas as pd # ... 你的原有代码(DataFrame处理部分) ... # 替换NaN为None,转为字典列表格式 forecast_data = forecast.replace({pd.np.nan: None}).to_dict('records') context = { 'detail': forecast_data } return Response(context)
方案二:生成合法JSON后解析为Python对象
利用pandas的to_json方法直接生成符合JSON规范的字符串,再解析为Python结构:
import json import pandas as pd # ... 你的原有代码(DataFrame处理部分) ... # 生成兼容JSON的字符串,指定NaN转为null,日期用ISO格式 forecast_json = forecast.to_json(orient='records', na='null', date_format='iso') # 解析为Python列表字典 forecast_data = json.loads(forecast_json) context = { 'detail': forecast_data } return Response(context)
两种方法都无需删除字段或填充非空值,完美保留你需要的响应结构。
内容的提问来源于stack exchange,提问作者Avishka Dambawinna
相关产品推荐
相关产品推荐

