繁体   English   中英

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

[英]Parsing of nested structured json in Pandas

我正在从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. 如果我对Col2 API本身和所有列名进行一些更改,就像在Col1 ,以便于解析,会更容易吗?

谢谢!

只需从您的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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM