如何将API请求返回的JSON文本字符串转换为pandas dataframe?
解决方案
你可以按以下步骤将Alpha Vantage接口返回的JSON格式数据转换为pandas DataFrame:
- 先验证请求状态,解析响应的JSON内容
- 提取嵌套的时序数据节点,调整行列结构适配DataFrame格式
- 优化字段名、转换数值类型方便后续分析
你现有的请求代码后追加以下代码即可直接运行:
import pandas as pd # 校验请求是否成功 if response1.status_code == 200: # 解析响应为字典格式 res_json = response1.json() # 时序数据对应key,和你参数里的interval保持一致即可 time_series_key = "Time Series (1min)" if time_series_key in res_json: ts_data = res_json[time_series_key] # 转DataFrame后转置,让时间戳作为行维度 df = pd.DataFrame(ts_data).T # 重置索引,把时间戳从索引转为独立列 df = df.reset_index(names=["交易时间"]) # 重命名字段去掉前缀数字,简化后续调用 df = df.rename(columns={ "1. open": "开盘价", "2. high": "最高价", "3. low": "最低价", "4. close": "收盘价", "5. volume": "成交量" }) # 把价格、成交量字段从字符串转为数值类型 df[["开盘价", "最高价", "最低价", "收盘价", "成交量"]] = df[["开盘价", "最高价", "最低价", "收盘价", "成交量"]].apply(pd.to_numeric) # 打印前5行验证结果 print(df.head()) else: print("无对应时序数据返回,请检查请求参数是否正确") else: print(f"请求失败,状态码:{response1.status_code},错误详情:{response1.text}")
补充说明
如果你修改请求参数将datatype设为csv,可以直接通过更简单的方式生成DataFrame:
df = pd.read_csv(response1.text)
内容的提问来源于stack exchange,提问作者Nish
相关产品推荐
相关产品推荐

