如何使用特定的数据帧格式将此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"
}
这是一个有点过于嵌套的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
现在:
如果你想简化一点,你可以构建核心数据时不需要不对称的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
的格式。
感谢您的建议。为了让eaiser读入数据框,您如何看待如何更改JSON格式? – user3675188 2015-03-26 03:01:33
我在上面的“(更新)”中演示了更好的JSON格式 – 2015-03-26 03:25:02
看看[这里](http://stackoverflow.com/questions/13575090/construct-pandas-dataframe-from-items-in-nested-dictionary) – camdenl 2015-03-25 14:13:20