如何使用特定的数据帧格式将此JSON读取到数据帧中

问题描述:

这是我的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://*.com/questions/13575090/construct-pandas-dataframe-from-items-in-nested-dictionary) – camdenl 2015-03-25 14:13:20

这是一个有点过于嵌套的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