Разбор ответа JSON для заполнения данных в виде таблицы - PullRequest
0 голосов
/ 08 июня 2018

У меня есть ответ JSON в <class 'dict'>.Я хочу перебрать ответ JSON и сформировать табличное представление.Ниже приведен пример ответа JSON.

{'ResultSet': {'Rows': [{'Data': [{'VarCharValue': 'cnt'}, {'VarCharValue': 'id'}, {'VarCharValue': 'val'}]}, {'Data': [{'VarCharValue': '2000'}, {'VarCharValue': '1234'}, {'VarCharValue': 'ABC'}]},{'Data': [{'VarCharValue': '3000'}, {'VarCharValue': '5678'}, {'VarCharValue': 'DEF'}]}]}}

Ожидаемый формат вывода:

 cnt    id     val
2000   1234    ABC
3000   5678    DEF

Может быть только одна строка данных или может быть несколько строк данныхдля набора столбцов (для предоставленных образцов данных есть две строки).

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Полагаю, вы хотите использовать Панд.Поскольку pd.DataFrame принимает список словарей напрямую, вы можете реструктурировать входной словарь D как список словарей:

cols = [next(iter(i.values())) for i in D['ResultSet']['Rows'][0]['Data']]

d = [{col: j['VarCharValue'] for col, j in zip(cols, i['Data'])}
     for i in D['ResultSet']['Rows'][1:]]

df = pd.DataFrame(d)

print(df)

    cnt    id  val
0  2000  1234  ABC
1  3000  5678  DEF

Возможно, вы захотите преобразовать хотя бы серию cnt в числовой:

df['cnt'] = pd.to_numeric(df['cnt'])
0 голосов
/ 08 июня 2018

Я не уверен, что вы используете pandas, но вы можете легко разобрать ваш response диктант в pandas.DataFrame с помощью следующего кода

import pandas as pd

pd.DataFrame([[entr['VarCharValue'] for entr in r['Data']] for r in response['ResultSet']['Rows'][1:]],
             columns = [r['VarCharValue'] for r in response['ResultSet']['Rows'][0]['Data']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...