我正在尝试开发一个应用程序来检索股票价格(以JSON格式),然后对它们进行一些分析。我的问题是将JSON响应放入我可以工作的pandas DataFrame中。这是我的代码:
'''
References
http://stackoverflow.com/questions/6862770/python-3-let-json-object- accept-bytes-or-let-urlopen-output-strings
'''
import json
import pandas as pd
from urllib.request import urlopen
#set API call
url = "https://www.quandl.com/api/v3/datasets/WIKI/AAPL.json?start_date=2017-01-01&end_date=2017-01-31"
#make call and receive response
response = urlopen(url).read().decode('utf8')
dataresponse = json.loads(response)
#check incoming
#print(dataresponse)
df = pd.read_json(dataresponse)
print(df)
df = pd.read_json...
处的应用程序错误,错误 TypeError:预期字符串或Unicode 。
所以我认为这是第一个障碍。
第二个是我需要的地方。 JSON响应仅包含我感兴趣的两个数组column_names
和data
。如何仅提取这两个并放入pandas DataFrame?
答案 0 :(得分:4)
要回答您的第一个问题,pd.read_json
会直接获取JSON字符串,因此您应该这样做:
pd.read_json(response)
但是,考虑到数据的结构,最好先将JSON字符串转换为包含数据的字典:
d = json.loads(response)
然后只需从d['dataset']['data']
和d['dataset']['column_names']
pd.DataFrame(data=d['dataset']['data'], columns=d['dataset']['column_names'])