我正在尝试创建带有日期和收盘价的数据集,以便我的数据集看起来如下:
AAPL
2019-01-01 157.92
2019-01-02 157.92
我发现一个API在请求时会给出以下json响应:
r = requests.get(url)
data = r.json()
print(data)
{'name': 'AAPL', 'history': {'2019-01-01': {'open': '154.89', 'close': '157.92', 'high': '158.85', 'low': '154.23', 'volume': '37039737'}}}
{'name': 'AAPL', 'history': {'2019-01-02': {'open': '154.89', 'close': '157.92', 'high': '158.85', 'low': '154.23', 'volume': '37039737'}}}
由于我需要深入了解嵌套的字典,因此我对如何提取日期和收盘价一无所知。
我已经尝试了以下内容以及以下内容的各种变化,它们正在Internet上窥探一番,但还没有找到一种明确的方式来完成它或逻辑如何工作:
for k,v in data.items():
print(k,v)
在这种情况下该走什么路,逻辑的结构如何?
来自API的示例:https://www.worldtradingdata.com/documentation#full-history
{
"name": "AAPL",
"history": {
2019-04-12: {
"open": "199.20",
"close": "198.87",
"high": "200.14",
"low": "196.21",
"volume": "27760668"
},
2019-04-11: {
"open": "200.85",
"close": "198.95",
"high": "201.00",
"low": "198.44",
"volume": "20900808"
...
}
}
答案 0 :(得分:2)
您可以使用pandas.DataFrame.from_dict
创建数据框:
import pandas as pd
data = {
'name': 'AAPL',
'history': {
'2019-04-12': {
'open': '199.20',
'close': '198.87',
'high': '200.14',
'low': '196.21',
'volume': '27760668'
},
'2019-04-11': {
'open': '200.85',
'close': '198.95',
'high': '201.00',
'low': '198.44',
'volume': '20900808'
},
}
}
df = pd.DataFrame.from_dict(data['history'], orient='index')
其中给出以下数据框:
open close high low volume
2019-04-11 200.85 198.95 201.00 198.44 20900808
2019-04-12 199.20 198.87 200.14 196.21 27760668