将 JSON 响应转换为 Pandas 数据帧

时间:2021-02-21 15:11:53

标签: python json pandas request

我收到来自网站的 json 响应

response = requests.get(API_URL, params=data)
response_json = response.json()
a = response_json['Time Series (5min)']
print(a)

输出:

{
   '2021-02-19 18:45:00': {'1. open': '119.1800', '2. high': '119.1800', '3. low': '119.1800', '4. close': '119.1800', '5. volume': '1250'},
   '2021-02-19 18:25:00': {'1. open': '119.1000', '2. high': '119.1000', '3. low': '119.1000', '4. close': '119.1000', '5. volume': '701'} ... }

比我试图将其转换为数据帧:

data = pd.json_normalize(data=a)
print(data)

但在结果中我有 1 行有很多列。 Output

那么我应该如何将其转换为以日期时间为索引、以 JSON 中的键为列的表?

1 个答案:

答案 0 :(得分:1)

  • 使用DataFrame()
  • 转置形状
  • reindex() 将索引转换为日期/时间
a = {'2021-02-19 18:45:00': {'1. open': '119.1800',
  '2. high': '119.1800',
  '3. low': '119.1800',
  '4. close': '119.1800',
  '5. volume': '1250'},
 '2021-02-19 18:25:00': {'1. open': '119.1000',
  '2. high': '119.1000',
  '3. low': '119.1000',
  '4. close': '119.1000',
  '5. volume': '701'}}


df = pd.DataFrame(a).T
df.reindex(pd.to_datetime(df.index))

<头>
1.打开 2.高 3.低 4.关闭 5.音量
2021-02-19 18:45:00 119.18 119.18 119.18 119.18 1250
2021-02-19 18:25:00 119.1 119.1 119.1 119.1 701
相关问题