#python #json #pandas #dataframe
#python #json #pandas #фрейм данных
Вопрос:
Я использую Qualtrics API для извлечения некоторых данных для работы. Результаты, которые я получал, возвращаются в формате JSON, и я хотел бы преобразовать данные в фрейм данных. Я работаю в записной книжке jupyter в Alteryx. Я планирую экспортировать фрейм данных в Alteryx для выполнения работы в другом месте .. все, что мне нужно сделать, это привести его в форму. Я получаю тот же ответ, что и в примере, который я опубликовал ниже с веб-сайта Qualtrics. Кто-нибудь знает, как я могу взять поля в разделе вложенных «элементов» и создать фрейм данных? Я хотел бы создать фрейм данных из полей контактов, которые я получаю обратно.
Я попробовал следующее:
jdata = json.loads(response.text)
df = pd.DataFrame(jdata)
print(df)
Но я получаю фрейм данных всего ответа json.
Пример ответа:
{
"meta": {
"httpStatus": "200 - OK",
"requestId": "7de14d38-f5ed-49d0-9ff0-773e12b896b8"
},
"result": {
"elements": [
{
"contactId": "CID_123456",
"email": "js@example.com",
"extRef": "1234567",
"firstName": "James",
"language": "en",
"lastName": "Smith",
"phone": "8005552000",
"unsubscribed": false
},
{
"contactId": "CID_3456789",
"email": "person@example.com",
"extRef": "12345678",
"firstName": "John",
"language": "en",
"lastName": "Smith",
"phone": "8005551212",
"unsubscribed": true
}
],
"nextPage": null
}
}
Комментарии:
1. Вам нужно будет выбрать
$.result
поле из исходного JSON-файла resonse, если вам нужны вложенные данные
Ответ №1:
попробуйте
jdata = json.loads(response.text)
elements= jdata['result']['elements']
df = pd.DataFrame(elements)
print(df)
Ответ №2:
jdata = json.loads(response.text)
df = pd.json_normalize(jdata, record_path=['result', 'elements'])
Фактически, если jdata
это список dict, этот метод также доступен.