【发布时间】:2020-09-29 20:51:11
【问题描述】:
我有一个复杂/嵌套的 JSON,我需要将其转换为 DataFrame (Python)。我可以得到第一部分,但我正在努力解决第二部分。
import requests
from pandas.io.json import json_normalize
import json
url = 'url'
headers = {'api-key':'key'}
resp = requests.get(url, headers = headers)
print(resp.status_code)
r = resp.content
r
responses = json.loads(r.decode('utf-8'))
responses
输出(响应)
{'count': 39,
'requestAt': '2020-06-09T20:10:23.201+00:00',
'data': {'Id1': {'id': 'Id1',
'groupId': '1',
'label': 'Question 1',
'options': {'1_1': {'id': '1_1',
'prefix': 'A',
'label': 'Alternative A',
'isCorrect': True},
'1_2': {'id': '1_2',
'prefix': 'B',
'label': 'Alternative B',
'isCorrect': False},
'1_3': {'id': '1_3',
'prefix': 'C',
'label': 'Alternative C',
'isCorrect': False}}}}}
df = DataFrame(responses['data'])
df.T
输出(DataFrame.T):
+-----+---------+------------+-------------+
| id | groupId | label | options |
+-----+---------+------------+-------------+
| Id1 | 1 | Question 1 | **JSON 2** |
+-----+---------+------------+-------------+
**JSON 2** (all inside the cell above)
{'1_1': {'id': '1_1',
'prefix': 'A',
'label': 'Alternative A',
'isCorrect': True},
'1_2': {'id': '1_2',
'prefix': 'B',
'label': 'Alternative B',
'isCorrect': False},
'1_3': {'id': '1_3',
'prefix': 'C',
'label': 'Alternative C',
'isCorrect': False}}
我也需要将 JSON 2 打开到 DataFrame 中。
期望的输出:
+-----+---------+------------+--------+---------------+-----------+
| id | groupId | label | prefix | label | isCorrect |
+-----+---------+------------+--------+---------------+-----------+
| Id1 | 1 | Question 1 | A | Alternative A | True |
| Id1 | 1 | Question 1 | B | Alternative B | False |
| Id1 | 1 | Question 1 | C | Alternative C | False |
+-----+---------+------------+--------+---------------+-----------+
如何获得所需的输出?谢谢。
【问题讨论】:
-
似乎不是有效的 json,您可以从响应中添加几行吗?
-
现在可以了吗?我不得不从一个问题中删去一部分来举例说明,我希望现在可以了。
标签: python json pandas api dataframe