我有一个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中手动分配值,因此我有一个基于循环的解决方案可以工作,但是速度太慢。