将json查询结果加载到数据框

Posted

技术标签:

【中文标题】将json查询结果加载到数据框【英文标题】:load json query result to dataframe 【发布时间】:2021-12-18 23:14:37 【问题描述】:

完成 'load_query_result_to_df' 函数以从 以前的 'get_res_for_API_query' 到数据框。 如上所述,使用 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:查询的结果数错误

【问题讨论】:

【参考方案1】:

您可以尝试一些更简单的方法,例如:

df = pd.json_normalize(results, record_path = ['results'])

这将展平结果并生成一个名为 df 的新数据框。

将数据导入数据框后,处理数据可能会更容易。

【讨论】:

def load_query_result_to_df(api_query_res): results=None #names=["compony","name","review_date","cocoa_percent","company_location","rating","broad_bean_origin","bean_type"] r=api_query_res.json() for i in range(len(r["records"])): row=pd.json_normalize(r["fields"][i]) if results is None: results= row else: results.append(row) df = pd.json_normalize(results, record_path = ['records']) return df "nhits": 2, "parameters": "dataset": "chocolate-bars", "refine": "company": "Acalli", "timezone": "UTC ", "rows": 10, "format": "json", "records": ["datasetid": "chocolate-bars", "recordid": "8f51...b42c", "fields": “评分”:3.75,“review_date”:“2015”,“名称”:“Tumbes,Norandino”,“cocoa_percent”:70,“公司”:“Acalli”,“bean_type”:“Criollo”,“company_location”: “美国”,“broad_bean_origin”:“秘鲁”,“ref”:“1470”,“record_timestamp”:“2016-12-20T16:57:04.946000+00:00”,“datasetid”:“chocolate-酒吧”,“recordid”:“685b...81d8”,“字段”:“评级”:3.75,“review_date”:“2015”,... 我需要获取字段

以上是关于将json查询结果加载到数据框的主要内容,如果未能解决你的问题,请参考以下文章

VB |将 SQL 查询加载到组合框中

将 BQ 查询结果下载到 Python 数据框时出现 504 Deadline Exceeded 错误

Apache Spark - 将 UDF 的结果分配给多个数据框列

过滤 json 数据并将结果数据重新加载到 myTableView

将 JSON 多行文件加载到 pyspark 数据框中

java如何实现用户在文本框中输入好友昵称,点击查询,根据用户输入匹配好友昵称,结果加载到下拉框中