【发布时间】:2021-12-21 07:36:00
【问题描述】:
我正在将多个 JSON 对象读入一个 DataFrame。问题是某些列是列表。此外,数据非常大,因此我无法使用互联网上可用的解决方案。它们非常慢且内存效率低
我的数据如下所示:
df = pd.DataFrame({'A': ['x1','x2','x3', 'x4'], 'B':[['v1','v2'],['v3','v4'],['v5','v6'],['v7','v8']], 'C':[['c1','c2'],['c3','c4'],['c5','c6'],['c7','c8']],'D':[['d1','d2'],['d3','d4'],['d5','d6'],['d7','d8']], 'E':[['e1','e2'],['e3','e4'],['e5','e6'],['e7','e8']]})
A B C D E
0 x1 [v1, v2] [c1, c2] [d1, d2] [e1, e2]
1 x2 [v3, v4] [c3, c4] [d3, d4] [e3, e4]
2 x3 [v5, v6] [c5, c6] [d5, d6] [e5, e6]
3 x4 [v7, v8] [c7, c8] [d7, d8] [e7, e8]
这是我的数据的形状:(441079, 12)
我想要的输出是:
A B C D E
0 x1 v1 c1 d1 e1
0 x1 v2 c2 d2 e2
1 x2 v3 c3 d3 e3
1 x2 v4 c4 d4 e4
.....
编辑:在被标记为重复之后,我想强调一个事实,即在这个问题中,我正在寻找一种高效分解多列的方法。因此,批准的答案能够有效地在非常大的数据集上分解任意数量的列。另一个问题的答案未能做到的事情(这就是我在测试这些解决方案后提出这个问题的原因)。
【问题讨论】:
-
是的,如果你有包含 Python
lists 的objectdtype 列,那么一切都会很慢并且内存效率低下。从一开始就不要创建这样的数据框,这个问题可能会更好地解决。 -
@juanpa.arrivillaga 我能否以不同的方式读取 JSON 文件以免造成这种混乱? pd.read_csv 可以选择定义转换器,但我找不到任何类似的 pd.read_json
-
您可能需要编写一些东西,将反序列化的 json 数据转换成更易于管理的东西。
-
@juanpa.arrivillaga 令我惊讶的是,答案非常高效!
标签: python json pandas dataframe