2017-10-24 9 views
1

私はPythonに全く新しいです。 JSONをフィルタリングするには少し助けが必要です。Python - jsonオブジェクトの配列をDataframeに変換するにはどうすればいいですか?

私が何をしようとしている。具体的に
json = { 
    "selection":[ 
     { 
      "person_id":105894, 
      "position_id":1, 
      "label":"Work", 
      "description":"A description", 
      "startDate":"2017-07-16T19:20:30+01:00", 
      "stopDate":"2017-07-16T20:20:30+01:00" 
      }, 
      { 
     "person_id":945123, 
     "position_id":null, 
     "label":"Illness", 
     "description":"A description", 
     "startDate":"2017-07-17T19:20:30+01:00", 
     "stopDate":"2017-07-17T20:20:30+01:00" 
     } 
     ] 
    } 

のように、その上にクエリメソッドを使用できるようにデータフレームの中に(ここでは上記の)私のJSONを変換することです:

selected_person_id = 105894 
query_person_id = json[(json['person_id'] == selected_person_id)] 
or 
json.query('person_id <= 105894') 

列必要がありますbe:

cols = ['person_id', 'position_id', 'label', 'description', 'startDate', 'stopDate'] 

どうすればいいですか?

+0

はここを見てます。https:/ /pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html –

答えて

1

用途:

df = pd.DataFrame(json['selection']) 
print (df) 
    description label person_id position_id     startDate \ 
0 A description  Work  105894   1.0 2017-07-16T19:20:30+01:00 
1 A description Illness  945123   NaN 2017-07-17T19:20:30+01:00 

        stopDate 
0 2017-07-16T20:20:30+01:00 
1 2017-07-17T20:20:30+01:00 

EDIT:構造の平坦化は、使用json_normalize neeededされ、より複雑な例については

import json 

with open('file.json') as data_file:  
    json = json.load(data_file) 
+0

ありがとうございました! –

+0

@Jezraelという単純なことでしたが、あなたはどこでjsonの道を与えていますか? – pyd

+0

編集を確認し、jsonへの読み取りファイルが必要です。 – jezrael

0

>>> data = [{'state': 'Florida', 
...   'shortname': 'FL', 
...   'info': { 
...    'governor': 'Rick Scott' 
...   }, 
...   'counties': [{'name': 'Dade', 'population': 12345}, 
...      {'name': 'Broward', 'population': 40000}, 
...      {'name': 'Palm Beach', 'population': 60000}]}, 
...   {'state': 'Ohio', 
...   'shortname': 'OH', 
...   'info': { 
...    'governor': 'John Kasich' 
...   }, 
...   'counties': [{'name': 'Summit', 'population': 1234}, 
...      {'name': 'Cuyahoga', 'population': 1337}]}] 
>>> from pandas.io.json import json_normalize 
>>> result = json_normalize(data, 'counties', ['state', 'shortname', 
...           ['info', 'governor']]) 
>>> result 
     name population info.governor state shortname 
0  Dade  12345 Rick Scott Florida  FL 
1  Broward  40000 Rick Scott Florida  FL 
2 Palm Beach  60000 Rick Scott Florida  FL 
3  Summit  1234 John Kasich  Ohio  OH 
4 Cuyahoga  1337 John Kasich  Ohio  OH 
関連する問題