将 JSON 响应转换为 pandas 数据帧
Convert JSON response to pandas dataframe
我收到来自站点的 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 行有很多列。
那么我应该如何将它转换为 table 以日期时间作为索引和 JSON 中的键作为列?
- 使用
DataFrame()
- 转置形状
reindex()
将索引转换为 date/time
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. open
2. high
3. low
4. close
5. volume
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
我收到来自站点的 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 行有很多列。
那么我应该如何将它转换为 table 以日期时间作为索引和 JSON 中的键作为列?
- 使用
DataFrame()
- 转置形状
reindex()
将索引转换为 date/time
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. open | 2. high | 3. low | 4. close | 5. volume | |
---|---|---|---|---|---|
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 |