【问题标题】:Parsing of nested structured json in Pandas在 Pandas 中解析嵌套的结构化 json
【发布时间】:2018-12-01 21:57:03
【问题描述】:

我正在接收来自 API 的请求,并尝试使用 requests 库和 json_normalize() 函数在 Python 中处理它。这是我的步骤:

import requests
from pandas.io.json import json_normalize 

url = "Some String"

headers = {

'Authorization':"Some Token"}

response = requests.request("GET", url, headers=headers)

data = response.json()

df = json_normalize(data)

它给了我这样的输出:

Col1                                                  Col2
[{'text': 'sometext', 'date':'1528322400000',...}]    [[1528322400000, 24], [1528322460000, 24]

我想解析列内的嵌套结构,从中制作数据框并按日期合并。

情况是我可以像这样解析Col1df = json_normalize(data['Col1']) 它会给我很好的数据框,其中包含来自这个嵌套 json 的列,一切都很好。

但它不适用于Col2,因为基本上它是列表。在执行df = json_normalize(data['Col2']) 时收到错误:'list' object has no attribute 'values'

我的问题:

  1. 我可以像使用Col1 那样解析嵌套列表吗(使用json_normalize() 或其他)?
  2. 如果我对 API 本身和 Col2 中的所有列名进行一些更改会更容易吗?就像在 Col1 中一样以便于解析?

谢谢!

【问题讨论】:

    标签: python json list pandas python-requests


    【解决方案1】:

    只需从您的 col2 内容创建一个数据框,它将完美运行。

    >>> import pandas as pd
    >>>  pd.DataFrame([[1528322400000, 24], [1528322460000, 24]], columns=['c1','c2'])
    
                  c1  c2
    0  1528322400000  24
    1  1528322460000  24
    

    这是你想要的吗?

    【讨论】:

      【解决方案2】:

      如果 json 数据是包含键和值的字典列表,如下所示:

      Data = [{'key1' : Value1, 
               'key2' : Value2},
              {'key1' : Value3, 
               'key2' : Value4},
              {'key1' : Value5, 
               'key2' : Value6}]
      

      那么,

      import pandas as pd
      from pandas.io.json import json_normalize
      
      DF = pd.DataFrame.from_dict(json_normalize(Data), orient='columns')
      

      将为您提供以下格式的数据框:

           key1     key2
      
      0   Value1   Value2
      1   Value3   Value4
      2   Value5   Value6
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 2015-01-15
        • 2018-04-10
        相关资源
        最近更新 更多