来自复杂嵌套JSON的Pandas DataFrame没有循环

时间:2019-05-14 10:24:30

标签: python json pandas dataframe

我有一个JSON响应,已将其与json.loads组合为列表和字典,但无法将结果转换为所需的DataFrame。我从json.loads获得的结构是字典列表的列表,如下所示。可以有不同数量的字典,也可以没有字典(导致列表为空)。

[[],
 [],
 [{'number': 2, 'power': 2637.0, 'load': 58.6}],
 [{'number': 2, 'power': 2565.0, 'load': 57.0}],
 [{'number': 2, 'power': 2467.0, 'load': 54.8}],
 [{'number': 2, 'power': 1495.0, 'load': 33.2},{'number': 4, 'power': 1034.0, 'load': 34.5}],
 [{'number': 2, 'power': 1377.0, 'load': 30.6},{'number': 4, 'power': 912.0, 'load': 30.4}],
 [{'number': 1, 'power': 533.0, 'load': 11.8},{'number': 2, 'power': 1463.0, 'load': 32.5},{'number': 4, 'power': 969.0, 'load': 32.3}]
]

我已经尝试使用Pandas的json_normalize进行各种方法,但是通常我最终将每一行条目作为一个字典。

我理想地想要的是一个DataFrame,其数字值作为列名,并且在相应字段中具有幂值,其中最外面的列表索引成为DataFrame索引。空列表(如前两个列表)需要使用nan值作为一行。

      1      2      4
0   nan    nan    nan
1   nan    nan    nan
2   nan   2637    nan
3   nan   2565    nan
4   nan   2467    nan
5   nan   1495   1034
6   nan   1377    912
7   533   1463    969

这需要快速完成,因为数据集变得非常大。我目前正在遍历列表索引,然后在DataFrame中手动分配值,因此我有一个基于循环的解决方案可以工作,但是速度太慢。

0 个答案:

没有答案