如何以日期为键遍历嵌套字典

时间:2019-04-13 22:03:54

标签: python python-3.x loops

我正在尝试创建带有日期和收盘价的数据集,以便我的数据集看起来如下:

                  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"
        ...
    }
}

1 个答案:

答案 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