gpt4 book ai didi

python - json 到数据帧 : nested list of dictionaries

转载 作者:行者123 更新时间:2023-11-30 22:15:47 25 4
gpt4 key购买 nike

嗨,我有一个 json 列表,看起来像

data = [{'entry':{'points': 50, 'time': '5:00', 'year': 2010}}, 
{'entry':{'points': 25, 'time': '6:00', 'month': "february"}},
{'entry':{'points':90, 'time': '9:00', 'month': 'january'}},
{'entry':{'points':20, 'month': 'june'}}]

如何从中创建一个 pandas 数据框(我想删除输入字段,因为它是多余的)?

以下方法有效,但速度非常慢(对于大数据)

from pandas.io.json import json_normalize    
json_normalize(data)

这更快,但不像我认为的那样随意

pd.DataFrame([d['entry'] for d in data])

我觉得一定有更好的解决方案。我尝试了以下方法,但没有感到高兴

json_normalize(data, ['entry'])

有什么想法吗?

最佳答案

I feel that there must be a better solution.

定义“更好”。你的意思是更快吗?没有,对于这样的结构来说,没有。列表推导式经过优化,几乎在每个实例中都比其 for 循环等价物更快。

你的意思是看起来更好的东西吗?老实说,我认为列表理解看起来相当不错。

是否有一种神奇的单行代码可以自动处理这种格式的数据?是的!遗憾的是,您已经找到了它 (json_normalize),并且正如您所发现的,它比列表 comp 慢得多:

In [431]: data = data * 10000

In [432]: %timeit json_normalize(data)
1.3 s ± 19.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [433]: %timeit pd.DataFrame([d['entry'] for d in data])
63.2 ms ± 1.26 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

所以,不,没有更好的解决方案。

关于python - json 到数据帧 : nested list of dictionaries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194231/

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