2016-08-31 12 views
5

में कनवर्ट करें मेरे पास दो कॉलम के साथ एक पांडा डेटाफ्रेम है - एक फ़ाइल नाम और जिस घंटे में यह उत्पन्न हुआ था।पांडा डेटाफ्रेम को जेएसओएन प्रारूप

File  Hour 

    F1   1 
    F1   2 
    F2   1 
    F3   1 

मैं निम्नलिखित प्रारूप के साथ एक json फ़ाइल करने के लिए इसे परिवर्तित करने के लिए कोशिश कर रहा हूँ:

{“File”:”F1”,”Hour”:”1”} 
{“File”:”F1”,”Hour”:”2”} 
{“File”:”F2”,”Hour”:”1”} 
{“File”:”F3”,”Hour”:”1”} 

जब मैं कमांड dataframe.to_json (ओरिएंट = "रिकॉर्ड") का उपयोग, मैं में रिकॉर्ड मिलता है नीचे दिए गए प्रारूप:

[{“File”:”F1”,”Hour”:”1”}, 
{“File”:”F1”,”Hour”:”2”}, 
{“File”:”F2”,”Hour”:”1”}, 
{“File”:”F3”,”Hour”:”1”}] 

बस सोच वहाँ वांछित प्रारूप में json फ़ाइल प्राप्त करने के लिए एक विकल्प है या नहीं। किसी भी सहायता की सराहना की जाएगी।

+1

क्या आप चाहते हैं नहीं है:

df.to_json('temp.json', orient='records', lines=True) 

प्रत्यक्ष संपीड़न भी संभव है उचित 'जेसन'। आपको 'dataframe.to_json (orient = "record") से क्या मिलता है, उचित है' json' – piRSquared

उत्तर

7

DF.to_json के बाद आपको प्राप्त होने वाला आउटपुट string है। तो, आप इसे अपनी आवश्यकता के हिसाब से आसानी से टुकड़ा कर सकते हैं और कॉमा को भी हटा सकते हैं।

out = df.to_json(orient='records')[1:-1].replace('},{', '} {') 

किसी पाठ फ़ाइल में उत्पादन लिखने के लिए, तुम कर सकते हो:

with open('file_name.txt', 'w') as f: 
    f.write(out) 
+0

यह दो प्रमुख मान जोड़े के बीच अल्पविराम को हटा देता है: {"सर्वर समूह": "मानचित्र" "घंटा": 0}। मुझे इसे {"सर्वर समूह": "मानचित्र", "घंटा": 0} होना चाहिए। – user3447653

+0

हाँ, यह मेरी गलती थी। संशोधित एक को आजमाएं। –

+0

धन्यवाद, यह ठीक काम करता है। प्रारंभ में मैं डेटाफ्रेम को एक जेएसएस फ़ाइल में परिवर्तित करता था और इसे "df1.to_json (orient = 'record', path_or_buf = '/ content/tmp/GoogleCount.json') [1: -1] का उपयोग करके स्थानीय फ़ाइल में संग्रहीत करता था। बदलने के('},{','} {')"। लेकिन अब प्रतिस्थापन कथन के बाद, मुझे त्रुटि मिलती है "'noneType' ऑब्जेक्ट में कोई विशेषता नहीं है '__getitem__'" – user3447653

3

मुझे लगता है कि क्या ओ पी की तलाश में है है:

with open('temp.json', 'w') as f: 
    f.write(df.to_json(orient='records', lines=True)) 

इस चाल करना चाहिए।

0

पांडा के नए संस्करण (0.20.0+, मेरा मानना ​​है) में, यह सीधे किया जा सकता है:

df.to_json('temp.json.gz', orient='records', lines=True, compression='gzip') 
संबंधित मुद्दे