मेरे पास पोस्टग्रेक्यूएल डेटाबेस में डेटा सेव है। मैं Python2.7 का उपयोग करके इस डेटा को क्वेरी कर रहा हूं और इसे पंडों के डेटाफ़्रेम में बदल रहा हूं। हालाँकि, इस डेटाफ्रेम के अंतिम कॉलम में इसके भीतर मानों का एक शब्दकोष (या सूची) है। DataFrame इस तरह दिखता है:
[1] df
Station ID Pollutants
8809 {"a": "46", "b": "3", "c": "12"}
8810 {"a": "36", "b": "5", "c": "8"}
8811 {"b": "2", "c": "7"}
8812 {"c": "11"}
8813 {"a": "82", "c": "15"}
मुझे इस कॉलम को अलग कॉलम में विभाजित करने की आवश्यकता है ताकि DataFrame इस तरह दिखे:
[2] df2
Station ID a b c
8809 46 3 12
8810 36 5 8
8811 NaN 2 7
8812 NaN NaN 11
8813 82 NaN 15
मुख्य मुद्दा यह है कि सूचियाँ समान लंबाई नहीं हैं। लेकिन सभी सूचियां केवल 3 मानों तक ही होती हैं: ए, बी, और सी। और वे हमेशा एक ही क्रम में दिखाई देते हैं (एक पहले, दूसरे, सी तीसरे)।
निम्नलिखित कोड काम करने के लिए उपयोग किया गया था और मुझे जो चाहिए था उसे वापस करने के लिए (df2)।
[3] df
[4] objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]]
[5] df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)
[6] print(df2)
मैं पिछले हफ्ते ही इस कोड को चला रहा था और यह ठीक काम कर रहा था। लेकिन अब मेरा कोड टूट गया है और मुझे यह त्रुटि पंक्ति [4] से मिली है:
IndexError: out-of-bounds on slice (end)
मैंने कोड में कोई बदलाव नहीं किया है, लेकिन अब मुझे त्रुटि मिल रही है। मुझे लगता है कि यह मेरे तरीके के मजबूत या उचित नहीं होने के कारण है।
सूचियों के इस स्तंभ को अलग-अलग स्तंभों में विभाजित करने के बारे में कोई सुझाव या मार्गदर्शन सुपर सराहना की जाएगी!
संपादित करें: मुझे लगता है कि .tolist () और .apply विधियाँ मेरे कोड पर काम नहीं कर रही हैं क्योंकि यह एक यूनिकोड स्ट्रिंग है, अर्थात:
#My data format
u{'a': '1', 'b': '2', 'c': '3'}
#and not
{u'a': '1', u'b': '2', u'c': '3'}
डेटा इस प्रारूप में पोस्टग्रेक्यूएल डेटाबेस से आयात कर रहा है। इस मुद्दे के साथ कोई मदद या विचार? क्या यूनिकोड को रूपांतरित करने का कोई तरीका है?
iloc[:, :3]
मान लिया गया है वहाँ 3 आइटम हो जाएगा, और हो सकता है और हाल ही में डेटा स्लाइस केवल 1 या 2 (जैसे कोई हो को भी हो है b
में की तरह index 8813
)?
iloc
भाग को छोड़ देता हूं