【发布时间】:2019-10-13 01:22:21
【问题描述】:
我已经为我的问题寻找解决方案,但找不到任何适用的方法。我正在尝试将高维 JSON 文件导入 Pandas 数据框。
结构类似于:
{ 'manufacturing_plant_events':
{ 'data':
{ 'shiftInformation':
{ 'shift1':
{ 'color': 'red'
, 'amount' : 32
, 'order' : None
},
'shift2':
{ 'color': 'blue'
, 'amount' : 44
, 'order' : 1
},
'shift3':
{ 'color': 'green'
, 'amount' : 98
, 'order' : 2
}
}
...}
...}
}
我尝试了多种解决方案,包括:
- json.loads()
- pd.DataFrame(json)
- json_normalize(json)
- pd.read_json(json)
和其他人,我尝试将我的数组展平并将其转换为一个也不起作用的数据框 bu。我不确定这是否可能,或者数据框是否只支持几级嵌套。
我尝试过的扁平化方法是尝试在包含叶子信息的数据框中创建列。因此,我也可以使用具有以下列名称的完整路径和值(存储在节点中的实际值)的数据框。
我的数据框中的第一行:
(
manufacturing_plant_events.data.shiftInformation.shift1.color
'red'
manufacturing_plant_events.data.shiftInformation.shift1.amount
32
manufacturing_plant_events.data.shiftInformation.shift1.order
None
)
等等。
非常感谢任何有关如何解决此问题的建议。
【问题讨论】:
-
一种可能的解决方案:将 json 展平为 pandas 数据框后,您可以将标签按
.拆分为新列。 -
您希望每一行都为
shiftX?那么第一行是shift1,第二行是shift2,等等? -
你能分享整个json文件吗?或者至少与您想要的 2 行数据一样多?
-
Pandas 数据框不擅长处理分层数据。他们有类似 CSV 文件或 Excel 电子表格的行和列的概念,所以你应该决定你希望你的数据框是什么样子,用
json.load加载 json,将其转换为适合pd.DataFrame的格式的 2D 数据和从中构建数据框。