json pandas 内存溢出_python – Pandas json_normalize产生令人困惑的`KeyError`消息?

我正在尝试将嵌套的

JSON转换为Pandas数据帧.我一直在使用json_normalize成功,直到遇到某个JSON.我已经制作了一个较小的版本来重现问题.

from pandas.io.json import json_normalize

json=[{"events": [{"schedule": {"date": "2015-08-27",

"location": {"building": "BDC", "floor": 5},

"ID": 815},

"group": "A"},

{"schedule": {"date": "2015-08-27",

"location": {"building": "BDC", "floor": 5},

"ID": 816},

"group": "A"}]}]

然后我跑:

json_normalize(json[0],'events',[['schedule','date'],['schedule','location','building'],['schedule','location','floor']])

期待看到这样的事情:

ID group schedule.date schedule.location.building schedule.location.floor

'815' 'A' '2015-08-27' 'BDC' 5

'816' 'A' '2015-08-27' 'BDC' 5

但相反,我得到这个错误:

In [2]: json_normalize(json[0],'events',[['schedule','date'],['schedule','location','building'],['schedule','location','floor']])

---------------------------------------------------------------------------

KeyError Traceback (most recent call last)

in ()

----> 1 json_normalize(json[0],'events',[['schedule','date'],['schedule','location','building'],['schedule','location','floor']])

/Users/logan/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/io/json.pyc in json_normalize(data, record_path, meta, meta_prefix, record_prefix)

739 records.extend(recs)

740

--> 741 _recursive_extract(data, record_path, {}, level=0)

742

743 result = DataFrame(records)

/Users/logan/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/io/json.pyc in _recursive_extract(data, path, seen_meta, level)

734 meta_val = seen_meta[key]

735 else:

--> 736 meta_val = _pull_field(obj, val[level:])

737 meta_vals[key].append(meta_val)

738

/Users/logan/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/io/json.pyc in _pull_field(js, spec)

674 if isinstance(spec, list):

675 for field in spec:

--> 676 result = result[field]

677 else:

678 result = result[spec]

KeyError: 'schedule'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值