修复load_query_result_to_df函数转API查询结果为DataFrame的报错
问题原因
- 你调用的开放数据API返回的JSON是标准搜索结果结构,实际的巧克力棒业务数据没有存放在JSON根层级,而是嵌套在
records数组下,单条数据的具体字段又存放在对应record的fields属性中 - 原写法直接把整个响应JSON转为DataFrame,生成的DF结构完全不符合预期,后续访问
cocoa_percent字段时会触发KeyError,结果数量校验逻辑也会因为结构错误判定为结果数量不符合要求
修复后的代码
import pandas as pd def load_query_result_to_df(api_query_res): # 获取响应JSON内容 res_json = api_query_res.json() # 提取所有记录的业务字段作为数据源 data_list = [record["fields"] for record in res_json.get("records", [])] # 生成符合要求的DataFrame df = pd.DataFrame(data_list) return df
可选优化
如果需要保留记录ID、采集时间等元信息,可以直接用扁平化方法处理全量records字段,不需要手动提取fields:
def load_query_result_to_df(api_query_res): res_json = api_query_res.json() df = pd.json_normalize(res_json.get("records", [])) return df
也可以新增响应状态校验,避免接口请求失败时触发JSON解析错误:先判断api_query_res.status_code == 200再执行后续解析逻辑。
内容的提问来源于stack exchange,提问作者Max Melichov
相关产品推荐
相关产品推荐

