2017-09-18 44 views
0

我有一個JSON文件嵌套的JSON文件轉換成數據幀

{ 
    "Date": 2017, 
    "count": 88,   
    "demographics": [ 
     { 
      "key": "age", 
      "value": "20-30" 
     }, 
     { 
      "key": "education", 
      "value": 'bachelor' 
     }, 
     { 
      "key": "income", 
      "value": "70-80" 
     }, 
     { 
      "key": "location", 
      "value": "USA" 
     } 
    ] 
} 

我用下面的代碼把它轉換成csv文件。它給我日期計數的3列,人口一個數據幀,但我需要的輸出與日期計數年齡的6列,教育一個數據幀, 收入地點

with open(r'Sample.json') as f: 
    data = json.load(f) 
dfNormalized=json_normalize(data) 

回答

0

使用applypd.Serise

d={ 
    "Date": 2017, 
    "count": 88, 
    "demographics": [ 
        { 
      "key": "age", 
      "value": "20-30" 
     }, 
        { 
      "key": "education", 
      "value": 'bachelor' 
     }, 
        { 
      "key": "income", 
      "value": "70-80" 
     }, 
        { 
      "key": "location", 
      "value": "USA" 
     } 
     ] 
} 

df=pd.DataFrame(d) 

A=(df.demographics.apply(pd.Series).T.loc['value'].to_frame().\ 
    set_index(df.demographics.apply(pd.Series).T.loc['key']).T).\ 
     rename_axis(None,1).reset_index(drop=True) 


pd.concat([df.drop('demographics',1).loc[0].to_frame().T,A],1) 
    Out[273]: 
     Date count age education income location 
    0 2017  88 20-30 bachelor 70-80  USA