将嵌套的JSON文件提取到数据框中-python

时间:2019-02-15 11:56:42

标签: python json dataframe dictionary nested

我正在尝试将JSON转换为仅包含价格信息的数据框。我了解API流程以及如何获取JSON,但是接下来我需要放入数据框中的数据是一系列嵌套在列表中的字典,列表嵌套在一个字典中,该字典又嵌套在另一个字典中,该字典进一步嵌套在另一本字典中。我想获取数据框以使列成为价格列表的键。我对Python还是很陌生,所以这很有挑战性。不知道是否有可能-深层雏鸟。

我提供了我的yahoofinancials API代码和JSON输出变量的代码段。谢谢你的帮助。

打印的值看起来像这样,我正在尝试使用所有数据获取价格部分(还有更多的实例,但这是为了显示价格在JSON中的位置)。

from yahoofinancials import YahooFinancials
raw_data = YahooFinancials('CL=F')
raw_data = raw_data.get_historical_price_data("2017-07-23", "2019-02-13", "weekly")
print(raw_data.values())

dict_values([{'eventsData': {}, 'firstTradeDate': {'formatted_date': '2018-07-23', 'date': 1532318400}, 'currency': 'USD', 'instrumentType': 'FUTURE', 'timeZone': {'gmtOffset': -18000}, 'prices': [{'date': 1532318400, 'high': 69.91999816894531, 'low': 0.0, 'open': 69.19000244140625, 'close': 68.94000244140625, 'volume': 1060185822, 'adjclose': 68.94000244140625, 'formatted_date': '2018-07-23'}, {'date': 1532923200, 'high': 70.43000030517578, 'low': 66.91999816894531, 'open': 68.87000274658203, 'close': 68.5999984741211, 'volume': 1108305118, 'adjclose': 68.5999984741211, 'formatted_date': '2018-07-30'}

希望将所有“价格”数据(日期,最高价,最低价,开盘价,收盘价,成交量,成交量,格式化日期)放入一个数据框,然后可以使用Pandas和NumPy进行处理。

1 个答案:

答案 0 :(得分:1)

from yahoofinancials import YahooFinancials
import pandas as pd

raw_data = YahooFinancials('CL=F')
raw_data = raw_data.get_historical_price_data("2017-07-23", "2019-02-13", "weekly")
df = pd.DataFrame(raw_data['CL=F']['prices'])