为了账号安全,请及时绑定邮箱和手机立即绑定

将带有嵌套字典的 json 响应转换为 pandas 数据框

将带有嵌套字典的 json 响应转换为 pandas 数据框

喵喔喔 2023-06-20 14:31:05
我有一个 json 响应,看起来像这样:d={'results':[    {'key1':'1','key2':'item1'},    {'key1':'1','key2':{            'subkey20':[                    {'subkey201':'val',                     'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'}]}},    {'key1':'1','key2':'item1'},    {'key1':'1','key2':{            'subkey20':[                    {'subkey201':'val',                     'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'},                    {'subkey201':'val',                    'subkey202':val,                    'subkey203':'val',                    'subkey204':'value'}]}},]}我目前正在将其处理成一个 pandas 数据框,每个键从 key1 开始代表 pandas 数据框中的一列。到目前为止,我只能做:    df = pd.concat([pd.DataFrame(v) for k,v in d.items()], keys=d)    print (df)这不会产生我想要的结果。我能否获得有关如何浏览此内容并获取所有键作为列和值填充的熊猫数据框的帮助?我确实尝试过使用 json_normalize 但是它将子键作为值而不是单独的列处理到 key2 列中。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

json_normalize()是工具。只需将它与一个一起使用两次explode()


pd.json_normalize(pd.json_normalize(d["results"]).explode("key2.subkey20").to_dict(orient="records"))

输出


key1   key2  key2.subkey20 key2.subkey20.subkey201 key2.subkey20.subkey202 key2.subkey20.subkey203 key2.subkey20.subkey204

   1  item1            NaN                     NaN                     NaN                     NaN                     NaN

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value

   1  item1            NaN                     NaN                     NaN                     NaN                     NaN

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value

   1    NaN            NaN                     val                     val                     val                   value



查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信