मेरे पास JSON ऑब्जेक्ट का अनुसरण है और इसे डेटाफ़्रेम में बदलने का प्रयास करें।

आंकड़े:

{
  "data": {
    "docs": [
      {
        "id": "1",
        "col1": "foo",
        "col2": "123",
        "list": ["foo barr, fooo"]
      },
      {
         "id": "2",
        "col1": "abc",
        "col2": "321",
        "list": ["lirum epsum"]
      },
      {
         "id": "3",
        "col1": "foo",
        "col2": "123",
        "list": null
   
      }
      }
    ]
  }
}

आदर्श रूप से सूची कॉलम में सूचियों के बजाय स्ट्रिंग्स होना चाहिए और यह इस तरह दिखना चाहिए:

id  col1    col2    list
1   foo     123     'foo barr, fooo'
2   abc     321     'lirum epsum'
3   foo     123      NaN

निम्नलिखित दृष्टिकोण एक अपवाद फेंक रहा है (लेखन त्रुटि: 'कोई नहीं' वस्तु पुनरावर्तनीय नहीं है):

with open(path_to_json, encoding='utf-8') as json_file:
    q= json.load(json_file)
    df = json_normalize(q['data'], record_path=['docs', 'list'])
0
jonas 28 अगस्त 2020, 16:43

2 जवाब

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

मैं ऊपर दिए गए उत्तर को पूरा करने के लिए टिप्पणी (अभी तक) नहीं जोड़ सकता लेकिन आप इस कोड का उपयोग करके अपनी कॉलम सूची को स्ट्रिंग में बदल सकते हैं

df['list']=df['list'].apply(lambda x: str(x).strip('[\']'))
2
Myrt 28 अगस्त 2020, 17:27
json = {
  "data": {
    "docs": [
      {
        "id": "1",
        "col1": "foo",
        "col2": "123",
        "list": ["foo barr, fooo"]
      },
      {
         "id": "2",
        "col1": "abc",
        "col2": "321",
        "list": ["lirum epsum"]
      },
      {
         "id": "3",
        "col1": "foo",
        "col2": "123",
        "list": np.nan
   
      },
      
    ]
  }
}
pd.DataFrame(json["data"]["docs"]).set_index("id")

आप को देंगे

    id  col1    col2    list
    1   foo     123     [foo barr, fooo]
    2   abc     321     [lirum epsum]
    3   foo     123     NaN
0
Andre S. 28 अगस्त 2020, 16:52