gpt4 book ai didi

python - 将 json_normalize 用于带有列表的结构化多级字典

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:58 24 4
gpt4 key购买 nike

我已经使用以下迭代方法:

for k, v in enumerate(my_request['content']):
for k1, v1 in enumerate(v['data']['score']):
df.loc[len(df)] = [v['tag_id'], v1['time'], v1['value']]

然而,虽然这最终达到了预期的结果,但它需要花费大量时间来遍历具有相同结构的较大文件。我假设迭代方法不是解决此类问题的理想方法。使用 pandas.io.json.json_normalize 代替,我尝试了以下操作:

result = json_normalize(my_request, ['content'], ['data', 'score', ['time', 'value']])

返回 KeyError: ("Try running with errors='ignore' as key %s is not always present", KeyError('data',))。我相信我误解了关于 json_normalize 的 pandas 文档,并且不太清楚我应该如何传递参数。

谁能指出我正确的方向?

(或者使用 errors='ignore' 返回 ValueError: Conflicting metadata name data, need distinguishing prefix .)

JSON 结构

 {  
'content':[
{
'data':{
'score':[
{
'time':'2015-03-01 00:00:30',
'value':75.0
},
{
'time':'2015-03-01 23:50:30',
'value':58.0
}
]
},
'tag_id':320676
},
{
'data':{
'score':[
{
'time':'2015-03-01 00:00:25',
'value':78.0
},
{
'time':'2015-03-01 00:05:25',
'value':57.0
}
]
},
'tag_id':320677
}
],
'meta':None,
'requested':'2018-04-15 13:00:00'
}

最佳答案

However, while this ultimately achieves the desired result, it takes a huge amount of time to iterate through larger files with the same structure.

我建议如下:

  1. 检查问题是否与您的迭代追加有关。 Pandas 不太擅长按顺序添加行。这段代码怎么样:

    tups = []
    for k, v in enumerate(my_request['content']):
    for k1, v1 in enumerate(v['data']['score']):
    tups.append(v['tag_id'], v1['time'], v1['value'])
    df = pd.DataFrame(tups, columns=['tag_id', 'time', 'value])
  2. 如果前面的速度不够快,请检查它是否是 JSON 解析部分

    for k, v in enumerate(my_request['content']):
    for k1, v1 in enumerate(v['data']['score']):
    v['tag_id'], v1['time'], v1['value']

    很可能 1. 会足够快。但是,如果不是,请检查是否 ujson对于这种情况可能会更快。

关于python - 将 json_normalize 用于带有列表的结构化多级字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49843027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com