2016-05-22 6 views
8

मैं एक REST API उपयोग कर रहा हूँ के रूप में निम्नानुसार एक json फ़ाइल प्राप्त करने के लिए:एक जेएसएस को पांडा डेटाफ्रेम में कैसे लोड करें?

import urllib2 
import pandas as pd 
import numpy as np 
import requests 

request='myrequest' 
data= requests.get(request) 
json=data.json() 
df=pd.DataFrame(json) 

और तरह

           items 
0 {u'access': u'all', u'count': 501, u'time': 2014} 
1 {u'access': u'all', u'count': 381, u'time': 2015} 

मैं कैसे उचित में इस एकल स्तंभ (है कि एक शब्दकोश की तरह दिखता है) बदल सकता है dataframe लग रहा है पांडस में कॉलम?

संपादित

कच्चे json डेटा की तरह इस

{ 
    "items": [ 
    { 
     "access": "all", 
     "count": 200, 
     "time": 2015 
    }, 
    { 
     "access": "all", 
     "count": 14, 
     "time": 2015 
    }, 
    ] 
} 

धन्यवाद लग रहा है!

+1

डेटाफ्रेम में कनवर्ट करने से पहले बस एक शब्दकोश में JSON लोड करें। –

+0

धन्यवाद! मैं उसे कैसे कर सकता हूँ? –

+1

क्या आप अपनी नमूना फाइल जोड़ सकते हैं? मैं एक उत्तर पोस्ट करूंगा। –

उत्तर

4

pd.read_json(json_str)

यहाँ Pandas documentation है।

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

json str की सूची के लिए आप भी कर सकते हैं:

import json 
import pandas as pd 

df = pd.DataFrame.from_records(map(json.loads, json_lst)) 
+0

मुझे' TypeError: अपेक्षित स्ट्रिंग या यूनिकोड ' –

+1

@Noobie क्या आप कच्चे डेटा साझा कर सकते हैं? – ayhan

+1

यदि 'json' एक सूची है, तो आपको उस सूची के प्रत्येक तत्व के लिए' read_json' होना चाहिए। 'Read_json' का इनपुट 'str' होना चाहिए। –

1

ठीक है, मुझे लगता है कि dicts और सूची के किसी भी विविधताओं वाली घोंसले को JSON आयात , जबकि पांडों को पुनरावृत्त तत्वों के साथ एक एकल dict संग्रह की आवश्यकता होती है। इसलिए यदि आप मेल नहीं खाते हैं तो आपको थोड़ा सा रूपांतरण करना होगा।

मान लीजिए कि मैं आपके JSON की संरचना को सही तरीके से समझता हूं (और मैं तब से नहीं कर सकता, आप केवल अंतिम उत्पाद प्रिंट कर रहे हैं, जेएसओएन संरचना नहीं), ऐसा लगता है कि यह शब्दकोशों की एक सूची है। अगर ऐसा है, यहाँ समाधान है:

data = {k:[v] for k,v in json[0].items()} 
for jso in json[1:]: 
    for k,v in jso.items(): 
     data[k].append(v) 

df = pd.DataFrame(data) 

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

मान दिए जाते हैं, मेरे कोड काम कर पाने के लिए, आप बस सामने निम्नलिखित की जरूरत है:

json = json["items"] 

मैं लगता है कि यह काम करना चाहिए, लेकिन यह इस बात पर निर्भर करता है कि अनुरोध JSON को कैसे संसाधित करता है। मुझे json ऑब्जेक्ट का प्रिंटआउट दें यदि यह काम नहीं करता है।

+0

धन्यवाद! मैंने आपको कच्चे जेसन के साथ प्रदान किया है –

संबंधित मुद्दे