python - 将json查询结果加载到数据框
问题描述
完成 'load_query_result_to_df' 函数,将上一个 'get_res_for_API_query' 中的 'api_query_res' 结果加载到数据帧中。如上所述,使用 api_query_res.json() 获取字典(表示 json)。
def get_res_for_API_query(included_field_value_pairs, excluded_field_value_pairs):
u="http://moocdsand.ml:8080/api/records/1.0/search?dataset=chocolate-bars"
if excluded_field_value_pairs:
for key, value in excluded_field_value_pairs:
u+="&exclude." + key + "=" + value
if included_field_value_pairs:
for key in range(0 , len(included_field_value_pairs)):
u+= "&refine." + included_field_value_pairs[key][0] + "=" + included_field_value_pairs[key][1]
response = requests.get(u)
return response
不起作用的功能:
def load_query_result_to_df(api_query_res):
df = pd.DataFrame.from_dict(api_query_res.json(), orient='index')
return df
我得到这个错误:
KeyError:'cocoa_percent' AssertionError:查询的结果数错误
解决方案
您可以尝试一些更简单的方法,例如:
df = pd.json_normalize(results, record_path = ['results'])
这将展平结果并生成一个名为 df 的新数据框。
将数据导入数据框后,处理数据可能会更容易。
推荐阅读
- javascript - Vue vue.config.js 代理 404
- python - 从 Python 调用 CustomVision 预测 API - 第二次不是魅力
- acumatica - 为什么我无法在我的交叉引用 (INItemXRef) 表中获得“当前”记录?
- discord - 是否有可能让 awaitReactions 给每个做出反应的人一个角色?
- laravel - 带有“LIKE”语句的雄辩查询在 Laravel 6 中不起作用
- laravel - Laravel 419 页面过期,同时通过刀片中的表单发布请求
- python - 有没有办法在保留章节元数据的同时下载视频?
- three.js - 如何相对于向量旋转笛卡尔坐标?
- android - 谷歌地图填充底部不适用于颤振Android
- regex - GSheets - 删除*后*一个单词的所有内容(但保留单词)