मैं पूरी तरह से अजगर के लिए नया हूँ। और मुझे अपने JSON को फ़िल्टर करने में सक्षम होने के लिए थोड़ी मदद चाहिए।

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')

कॉलम होना चाहिए:

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

मैं यह कैसे कर सकता हूं ?

5
Louis W. 24 अक्टूबर 2017, 15:48
यहां एक नज़र डालें pandas.pydata.org/pandas-docs/ स्थिर/उत्पन्न/…
 – 
Pedro Ferreira
24 अक्टूबर 2017, 15:50

2 जवाब

सबसे बढ़िया उत्तर

उपयोग:

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  

संपादित करें:

import json

with open('file.json') as data_file:    
    json = json.load(data_file)
11
jezrael 24 अक्टूबर 2017, 16:12
@ जेज़राएल, आप जेसन का रास्ता कहां दे रहे हैं?
 – 
pyd
24 अक्टूबर 2017, 16:11

अधिक जटिल उदाहरणों के लिए जहां संरचना का एक चपटा होना आवश्यक है json_normalize का उपयोग करें:

>>> 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
3
Nickpick 24 अक्टूबर 2017, 15:58