2015-03-25 33 views
0

這是我的JSON字符串,我想使它以下列表格格式讀入數據幀。如何使用特定的數據幀格式將此JSON讀取到數據幀中

我不知道我該怎麼做之後pd.Dataframe(json.loads(data))

JSON數據,編輯

{ 
     "data":[ 
      { 
      "data":{ 
       "actual":"(0.2)", 
       "upper_end_of_central_tendency":"-" 
      }, 
      "title":"2009" 
      }, 
      { 
      "data":{ 
       "actual":"2.8", 
       "upper_end_of_central_tendency":"-" 
      }, 
      "title":"2010" 
      }, 
      { 
      "data":{ 
       "actual":"-", 
       "upper_end_of_central_tendency":"2.3" 
      }, 
      "title":"longer_run" 
      } 
     ], 
     "schedule_id":"2014-03-19" 
    } 
+0

看看[這裏](http://stackoverflow.com/questions/13575090/construct-pandas-dataframe-from-items-in-nested-dictionary) – camdenl 2015-03-25 14:13:20

回答

1

這是一個有點過於嵌套的JSON。但是,如果這是你有什麼的工作,並假設你解析JSON是jdata

datapts = jdata['data'] 
rownames = ['actual', 'upper_end_of_central_tendency'] 
colnames = [ item['title'] for item in datapts ] + ['schedule_id' ] 
sched_id = jdata['schedule_id'] 
rows = [ [item['data'][rn] for item in datapts ] + [sched_id] for rn in rownames] 
df = pd.DataFrame(rows, index=rownames, columns=colnames) 

df現在:

resulting data frame

如果你想簡化一點,你可以構建核心數據時不需要不對稱的schedule_id字段,然後在事實後添加:

datapts = jdata['data'] 
rownames = ['actual', 'upper_end_of_central_tendency'] 
colnames = [ item['title'] for item in datapts ] 
rows = [ [item['data'][rn] for item in datapts ] for rn in rownames] 
d2 = pd.DataFrame(rows, index=rownames, columns=colnames) 
d2['schedule_id'] = jdata['schedule_id'] 

這將使相同的DataFrame(即​​)。它有助於學習熊貓嘗試幾種不同的建築策略,並感受更直接的感受。有更強大的工具可以將嵌套結構展開成更平坦的表格,但是它們並不像第一次那樣容易理解。

(更新)如果您想要更好地對JSON進行結構化以便更容易地使用這種格式,請向熊貓詢問它喜歡的內容。例如。 df.to_json()輸出,稍微美化:

{ 
    "2009": { 
    "actual": "(0.2)", 
    "upper_end_of_central_tendency": "-" 
    }, 
    "2010": { 
    "actual": "2.8", 
    "upper_end_of_central_tendency": "-" 
    }, 
    "longer_run": { 
    "actual": "-", 
    "upper_end_of_central_tendency": "2.3" 
    }, 
    "schedule_id": { 
    "actual": "2014-03-19", 
    "upper_end_of_central_tendency": "2014-03-19" 
    } 
} 

也就是說從大熊貓read_json功能會立即建立你的願望DataFrame的格式。

+0

感謝您的建議。爲了讓eaiser讀入數據框,您如何看待如何更改JSON格式? – user3675188 2015-03-26 03:01:33

+0

我在上面的「(更新)」中演示了更好的JSON格式 – 2015-03-26 03:25:02