python - 如何将复杂的 json 转换为 pandas 数据框
问题描述
我正在通过他们的 api 提取 FRED 数据,并且我得到了复杂的 JSON。隐藏在这些数据中的是责任数据。JSON 内部是一个嵌套的“观察”键,该键内部是一个带有“日期”和“值”键的字典列表。我需要日期和值作为列标题。日期也可以是索引。
要获取数据,需要一个免费的 api 密钥,可以在这里找到: https ://fred.stlouisfed.org/ 。只需转到我的帐户并按照说明进行操作即可。
有关提取数据的代码,请参见下文。
import pandas as pd
import time
import urllib
import requests
from fred_api import fred_api #config file with my personal api
networth_endoint = r'https://api.stlouisfed.org/fred/series/observations?series_id=BOGZ1FL102090005A&api_key={}&file_type=json'.format(api)
content = requests.get(url = networth_endoint)
data = content.json()
data
如果您不想经历这些麻烦,下面是返回内容的片段:
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'observation_start': '1600-01-01',
'observation_end': '9999-12-31',
'units': 'lin',
'output_type': 1,
'file_type': 'json',
'order_by': 'observation_date',
'sort_order': 'asc',
'count': 74,
'offset': 0,
'limit': 100000,
'observations': [{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1945-01-01',
'value': '215967.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1946-01-01',
'value': '232012.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1947-01-01',
'value': '269729.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1948-01-01',
'value': '294148.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1949-01-01',
'value': '304352.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '1950-01-01',
'value': '328550.0'}...
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '2017-01-01',
'value': '15479906.0'},
{'realtime_start': '2020-03-03',
'realtime_end': '2020-03-03',
'date': '2018-01-01',
'value': '16491618.0'}]}
这是从 1945 年到最后一个报告的季度。实际的 json 被分解...
谁能弄清楚如何从 json 中提取每个日期和值并用它制作一个数据框?
解决方案
推荐阅读
- java - RecyclerView如何添加同一个CardView的多张卡片?
- gitlab - 为什么某些使用 SSH 的 gitlab 项目克隆没有 SSH 模式?
- laravel - 关联创建?
- azure - Azure App 服务日志格式化配置
- php - 如何在 Laravel 8 中集成 Google Play 商店自动更新订阅?
- javascript - 带有其他选项的 X 可编辑清单输入
- java - Java:使用流与迭代字符来解析文件中的原始数据
- javascript - 使用ajax将数据发布到django时获取空值
- ios - 应用程序扩展是在没有位码的情况下构建的 - 仅在 M1 mac 上
- javascript - Element.scroll[To]() 在用户脚本中无法按预期工作