python: Pandas - конвертирует сложный json в фрейм данных - PullRequest
0 голосов
/ 05 октября 2018

У меня сложная структура данных JSON, и я должен преобразовать ее во фрейм данных.Структура JSON выглядит следующим образом:

{'fields': [{'id': 'a', 'label': 'Particulars', 'type': 'string'},
  {'id': 'b', 'label': 'States', 'type': 'string'},
  {'id': 'c', 'label': 'Gender', 'type': 'string'},
  {'id': 'd', 'label': ' 11-2013', 'type': 'string'},
  {'id': 'e', 'label': ' 12-2013', 'type': 'string'},
  {'id': 'f', 'label': ' 1-2014', 'type': 'string'},
  {'id': 'g', 'label': ' 2-2014', 'type': 'string'}],
 'data': [['Animal Husbandry- incl Poultry, Dairy and Herdsman',
   'Andhra Pradesh',
   'Men',
   '156.12',
   '153.18',
   '163.56',
   '163.56'],
  ['Animal Husbandry- incl Poultry, Dairy and Herdsman',
   'Bihar',
   'Men',
   '159.39',
   '149.38',
   '147.24',
   '155.89'],
  ['Animal Husbandry- incl Poultry, Dairy and Herdsman',
   'Gujarat',
   'Men',
   '157.08',
   '145',
   '145',
   '145']]}

Я хочу создать из него кадр данных в следующем формате:

Dataframe

Я пытался напрямую использовать функцию read_json, которая выдает ошибку.Затем я попытался использовать json.normalize, который не дает мне желаемого результата, так как я не знаю, как он работает.Может кто-нибудь сообщить мне, как я должен использовать json.normalize(), чтобы получить вывод в моем требуемом формате?

1 Ответ

0 голосов
/ 05 октября 2018

Используйте json_normalize и задайте имена столбцов по списку:

from pandas.io.json import json_normalize

df = json_normalize(d, 'data')
df.columns = [x.get('label') for x in d['fields']]
print (df)

                                         Particulars          States Gender  \
0  Animal Husbandry- incl Poultry, Dairy and Herd...  Andhra Pradesh    Men   
1  Animal Husbandry- incl Poultry, Dairy and Herd...           Bihar    Men   
2  Animal Husbandry- incl Poultry, Dairy and Herd...         Gujarat    Men   

   11-2013  12-2013  1-2014  2-2014  
0   156.12   153.18  163.56  163.56  
1   159.39   149.38  147.24  155.89  
2   157.08      145     145     145  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...