दिलचस्प पोस्ट
जावा में कैसे काम करता है बिट्सिंग? PHP के साथ काम कर रहे जावा एचटीटीपी क्लाइंट लाइब्रेरी का उपयोग कर एक फाइल कैसे अपलोड करें स्मृति से dlopen? प्रश्न चिह्न रूबी में क्या मतलब है? OS X "El Capitan" पर रत्न स्थापित नहीं कर सकता मेरे सिस्टम पर कई अलग-अलग पायथन संस्करण और समस्याओं के कारण फ़ंक्शन को सशर्त रूप से लागू करें एक स्ट्रिंग में एक विशिष्ट स्थान पर एक वर्ण डालें Google क्लाउड मेसेजिंग – कभी-कभी नेटवर्क स्थिति बदल जाने तक संदेश प्राप्त नहीं होते Bash स्क्रिप्ट, stdin पाइप से मूल्य पढ़ें जावास्क्रिप्ट दिनांक में दिन जोड़ें कोनेर यूरी-राउटर जीवन चक्र क्या है? (चुप त्रुटियों को डिबग करने के लिए) java-ffmpeg wrapper का उपयोग करें, या बस ffmpeg निष्पादित करने के लिए जावा रनटाइम का उपयोग करें? NASM विधानसभा इनपुट को पूर्णांक में कनवर्ट करते हैं? एंड्रॉइड पर आंतरिक एप स्टोरेज से बाहरी स्टोरेज तक फाइल को कैसे ले जाना / बदलना है?

पांडा डेटाफ्रेम के लिए JSON

मैं जो करने की कोशिश कर रहा हूं वह एक Google मानचित्र एपीआई से अक्षांश और अक्षांश निर्देशांक द्वारा निर्दिष्ट पथ के साथ ऊंचाई आंकड़े निकालता है:

from urllib2 import Request, urlopen import json path1 = '42.974049,-81.205203|42.974298,-81.195755' request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false') response = urlopen(request) elevations = response.read() 

यह मुझे ऐसे डेटा देता है जो इस तरह दिखता है:

 elevations.splitlines() ['{', ' "results" : [', ' {', ' "elevation" : 243.3462677001953,', ' "location" : {', ' "lat" : 42.974049,', ' "lng" : -81.205203', ' },', ' "resolution" : 19.08790397644043', ' },', ' {', ' "elevation" : 244.1318664550781,', ' "location" : {', ' "lat" : 42.974298,', ' "lng" : -81.19575500000001', ' },', ' "resolution" : 19.08790397644043', ' }', ' ],', ' "status" : "OK"', '}'] 

जब डेटाफ़्रेम के रूप में डालते हैं तो मुझे क्या मिलता है:

यहां छवि विवरण दर्ज करें

 pd.read_json(elevations) 

और यहां मैं क्या चाहता हूं:

यहां छवि विवरण दर्ज करें

मुझे यकीन नहीं है कि यह संभव है, लेकिन मुख्य रूप से जो मैं देख रहा हूं वह एक पैंडस डेटाफ्रेम में उंची, अक्षांश और देशांतर डेटा को एकत्र करने में सक्षम होने का एक तरीका है (फैंसी म्यूटिलिन हेडर होने की ज़रूरत नहीं है)।

अगर कोई भी इस डेटा के साथ काम करने में कुछ सलाह या सहायता दे सकता है जो महान होगा! अगर आप नहीं बता सकते हैं कि मैंने जेएसन डेटा से पहले बहुत कुछ काम नहीं किया है …

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

यह विधि सभी आकर्षक नहीं है, लेकिन काम करने लगता है:

 data = json.loads(elevations) lat,lng,el = [],[],[] for result in data['results']: lat.append(result[u'location'][u'lat']) lng.append(result[u'location'][u'lng']) el.append(result[u'elevation']) df = pd.DataFrame([lat,lng,el]).T 

कॉलम अक्षांश, रेखांश, ऊंचाई वाले डाटाफ्रेम को समाप्त करता है

यहां छवि विवरण दर्ज करें

Solutions Collecting From Web of "पांडा डेटाफ्रेम के लिए JSON"

मुझे जेडसन_अनॉर्मलाइज़ फ़ंक्शंस का उपयोग करने के लिए पंडों 0.13 के नवीनतम रिहाई में शामिल करने के लिए एक त्वरित और आसान समाधान मिला।

 from urllib2 import Request, urlopen import json from pandas.io.json import json_normalize path1 = '42.974049,-81.205203|42.974298,-81.195755' request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false') response = urlopen(request) elevations = response.read() data = json.loads(elevations) json_normalize(data['results']) 

यह जीएसएन डेटा के साथ एक अच्छा चपटी वाला डेटाफ्रेम देता है जो मुझे Google मानचित्र एपीआई से मिला।

यह कटाव चेक करें

 # reading the JSON data using json.load() file = 'data.json' with open(file) as train_file: dict_train = json.load(train_file) # converting json dataset from dictionary to dataframe train = pd.DataFrame.from_dict(dict_train, orient='index') train.reset_index(level=0, inplace=True) 

आशा करता हूँ की ये काम करेगा 🙂

आप पहले अपने जेसन डेटा को एक पायथन डिक्शनेरीरी में आयात कर सकते हैं:

 data = json.loads(elevations) 

फिर मक्खी पर डेटा संशोधित करें:

 for result in data['results']: result[u'lat']=result[u'location'][u'lat'] result[u'lng']=result[u'location'][u'lng'] del result[u'location'] 

Json स्ट्रिंग का पुनर्निर्माण:

 elevations = json.dumps(data) 

आखिरकार :

 pd.read_json(elevations) 

आप डेटा को वापस स्ट्रिंग में भी डंप करने से बच सकते हैं, मुझे लगता है पांडा सीधे एक डिक्शनरीरी से डाटाफ्रेम बनाते हैं (मैंने इसे लंबे समय से उपयोग नहीं किया है: p)

समस्या यह है कि आपके डेटा फ्रेम में कई कॉलम हैं जिनमें उन में छोटे दिशानिर्देश दिए गए हैं उपयोगी जेसन अक्सर भारी नेस्टेड है। मैं छोटे फ़ंक्शंस लिख रहा हूं जो मुझे एक नई कॉलम में जानकारी चाहते हैं। इस तरह मैं उस प्रारूप में हूं जिसे मैं उपयोग करना चाहता हूं।

 for row in range(len(data)): #First I load the dict (one at a time) n = data.loc[row,'dict_column'] #Now I make a new column that pulls out the data that I want. data.loc[row,'new_column'] = n.get('key')