我目前正在努力解析以下字符串-API请求的响应- https://api.iextrading.com/1.0/deep/book?symbols=goog
此API的输出为
{“ GOOG”:{“出价”:[{“价格”:1030.79,“大小”:100,“时间戳”:1541428203560},{“价格”:1003.79,“大小”:200,“时间戳” :1541429104723}],“请求”:[{“价格”:1040.62,“大小”:100,“时间戳”:1541429609821},{“价格”:1084.79,“大小”:100,“时间戳”:1541428203541}, {“ price”:1111.79,“ size”:200,“ timestamp”:1541428981007}]}}
希望从输出中获得price
值和size
值,既有出价也有要价。以数据帧或其他可行格式保存它。
谢谢您的帮助!
我能够通过将其格式化为fdataframe并进行索引来获得每一行的第一行,例如
a = pd.read_json(url).dropna()
r = pd.DataFrame(a)
print(r.iloc[0][0][0])
响应
{'timestamp': 1541428203541, 'price': 1084.79, 'size': 100}
但是我仍然需要以某种方式解析它以获得price
和size
的值...
答案 0 :(得分:2)
假设这是JSON;使用json.loads
将其转换为嵌套字典。
>>> line = '{"GOOG":{"bids":[{"price":1070.92,"size":100,"timestamp":1541089522066}],"asks":[]}}'
>>> d = json.loads(line)
>>> d["GOOG"]["bids"][0]["price"]
1070.92
>>> d["GOOG"]["bids"][0]["size"]
100
来自评论:
url = "api.iextrading.com/1.0/deep/book?symbols=goog" d = json.loads(url)`
好吧,问题在于您试图将 URL本身解析为JSON字符串。这不是json.loads
所做的。相反,您必须先从该URL中读取内容,例如使用urllib
,或仅使用pandas.read_json
,就像您在问题中的其他代码中所做的那样:
>>> d = pd.read_json(url).to_dict()
>>> d["GOOG"]["bids"][0]["price"]
1037.23