Python:从JSON响应的部分构建DataFrame

时间:2017-01-20 10:21:50

标签: json python-3.x pandas dataframe

我正在尝试开发一个应用程序来检索股票价格(以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_namesdata。如何仅提取这两个并放入pandas DataFrame?

1 个答案:

答案 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'])