Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas中嵌套结构化json的解析_Python_Json_List_Pandas_Python Requests - Fatal编程技术网

Python Pandas中嵌套结构化json的解析

Python Pandas中嵌套结构化json的解析,python,json,list,pandas,python-requests,Python,Json,List,Pandas,Python Requests,我正在接收来自API的请求,并尝试使用requestslibrary和json\u normalize()函数在Python中处理它。以下是我的步骤: import requests from pandas.io.json import json_normalize url = "Some String" headers = { 'Authorization':"Some Token"} response = requests.request("GET", url, headers=h

我正在接收来自API的请求,并尝试使用
requests
library和
json\u 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]
我想解析列中的嵌套结构,从中生成数据帧并在日期合并

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

但是它不适用于
Col2
,因为它基本上是列表。执行
df=json\u normalize(数据['Col2'])
时,我收到一个错误:
'list'对象没有属性“value”

我的问题是:

  • 我是否可以像解析
    Col1
    一样解析嵌套列表(使用
    json\u normalize()
    或smth other)
  • 如果我像在
    Col1
    中一样对API本身和
    Col2
    中的所有列名进行一些更改,以便更轻松地进行解析,会更容易吗

  • 谢谢

    只需从col2内容中创建一个数据帧,它就能完美工作

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

    这就是你想要的吗?

    只要从你的col2内容创建一个数据框,它就会工作得很好

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

    这就是您想要的吗?

    如果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
    

    希望这有帮助。

    如果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
    
    希望这有帮助