如何提取嵌套JSON指定字段转换为pandas DataFrame
报错原因
requests.get()返回的resp是HTTP响应对象,不是解析完成的Python字典:
- 直接传入
pd.DataFrame()时,pandas会按响应的原始字节流拆分,因此得到逐段字节的异常结果 - 直接访问
resp.meta或者用resp['key']取值,会因为响应对象本身不支持属性、下标访问字典结构,抛出对应属性不存在、不可下标取值的错误
正确实现方法
- 第一步:调用响应对象的
json()方法,把接口返回的JSON字符串解析为Python字典 - 第二步:从解析后的字典中提取
values字段,传入pd.DataFrame()即可。该字段下的每个元素刚好对应DataFrame的一行数据,会自动保留你需要的时间、开盘价、最高价、最低价、收盘价、成交量6个字段 - 第三步(可选):转换字段类型,方便后续时序、量化分析
参考代码
import requests import pandas as pd resp = requests.get(url) # 解析JSON响应为字典 resp_data = resp.json() # 提取目标字段生成DataFrame df = pd.DataFrame(resp_data['values']) # 可选:字段类型优化,适配后续计算 df['datetime'] = pd.to_datetime(df['datetime']) numeric_columns = ['open', 'high', 'low', 'close', 'volume'] df[numeric_columns] = df[numeric_columns].apply(pd.to_numeric)
若执行
resp.json()时抛出解析错误,可先打印resp.text检查接口实际返回内容,确认是否存在请求参数错误、鉴权失败、请求频率超限等非预期情况。
内容的提问来源于stack exchange,提问作者user1903663
相关产品推荐
相关产品推荐

