【问题标题】:load json query result to dataframe将json查询结果加载到数据框
【发布时间】: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:查询的结果数错误

【问题讨论】:

    标签: python json pandas data-science


    【解决方案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”,...
    • 我需要获取字段
    猜你喜欢
    • 2011-02-11
    • 2017-08-26
    • 2016-01-02
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多