将 Json 嵌套到数据框(熊猫)中

马里亚纳罗德里格斯

我正在导入以下 json。它不是超级广泛,但我只是在这里添加了一小块用于演示:

{'request': {'Target': 'Offer',
  'Format': 'json',
  'Service': 'XXXXX',
  'Version': '2',
  'NetworkToken': 'uu238939871',
  'Method': 'findAll',
  'fields': ['preview_url',
   'sub1',
   'sub2',
   'sub3',
   'sub4',
   'sub5',
   'sub6',
   'sub7',
   'sub8',
   'sub9',
   'sub10',
   'sub11',
   'sub12'],
  'filters': {'status': 'active', 'advertiser_id': '626'}},
 'response': {'status': 1,
  'httpStatus': 200,
  'data': {'231': {'Offer': {'sub1': '231',
     'sub2': '626',
     'sub3': 'XXXXXXXX',
     'sub4': 'XXXXXXX',
     'sub5': 'https://play.google.com/store/apps',
     'sub6': 'https://XXXXX',
     'sub7': '0.39',
     'sub8': 'active',
     'sub9': 'None',
     'sub10': '0',
     'sub11': '0',
     'sub12': '1',
     'sub13': 'XXXXX'}},
   '216': {'Offer': {'sub1': '216',
     'sub2': '626',
     'sub3': 'XXXXXXXX',
     'sub4': '682666',
     'sub5': 'https://play.google.com/store/appsg',
     'sub6': 'https://XXXXXXX',
     'sub7': '1.96000',
     'sub8': 'active',
     'sub9': 'None',
     'sub10': '0',
     'sub11': '0',
     'sub12': '1',
     'sub13': 'XXXXX'}}
 'errors': [],
  'errorMessage': None}}

m trying to get this into a data frame by using df = pd.json_normalize(data) however the only thing I得到的是一个有 1 行和 400 多列的 df,这并不理想。我也尝试使用 flatten 但出现错误,它只显示“数据”

from flatten_json import flatten
dic_flattened = (flatten(d, '.') for d in data['data'])
df = pd.DataFrame(dic_flattened)

最终的数据框应该在列中包含每个子项,在行中包含字段,例如:

子1 子2 子 3
231 626 XXXXXXX
216 626 XXXXXXX
寡妇

如果在构建 DataFrame 之前先在 Python 中重新格式化字典,会更简单。由于您需要Sub密钥,您可以使用列表推导简单地提取它们:

out = pd.DataFrame([v['Offer'] for v in my_data['response']['data'].values() if isinstance(v, dict)])

输出:

  sub1 sub2      sub3     sub4                                 sub5             sub6     sub7    sub8  sub9 sub10 sub11 sub12  sub13
0  231  626  XXXXXXXX  XXXXXXX   https://play.google.com/store/apps    https://XXXXX     0.39  active  None     0     0     1  XXXXX
1  216  626  XXXXXXXX   682666  https://play.google.com/store/appsg  https://XXXXXXX  1.96000  active  None     0     0     1  XXXXX

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章