Python 将Hierarchical JSON文件导入数据帧
我一直在寻找解决问题的方法,但找不到任何适用的方法。我正在尝试将一个高维JSON文件导入到一个数据帧中 结构类似于:Python 将Hierarchical JSON文件导入数据帧,python,json,pandas,Python,Json,Pandas,我一直在寻找解决问题的方法,但找不到任何适用的方法。我正在尝试将一个高维JSON文件导入到一个数据帧中 结构类似于: { 'manufacturing_plant_events': { 'data': { 'shiftInformation': { 'shift1': { 'color': 'red' , 'amount'
{ '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_规范化(json)
- pd.read_json(json)
(
manufacturing_plant_events.data.shiftInformation.shift1.color
'red'
manufacturing_plant_events.data.shiftInformation.shift1.amount
32
manufacturing_plant_events.data.shiftInformation.shift1.order
None
)
等等
对于如何解决这一问题的任何建议,我们都将不胜感激。我通过将dict展平,提出了一个数据帧:
将熊猫作为pd导入
def flat_dict(字典,前缀):
如果类型(字典)=dict:
行=[]
对于键,字典中的项。项()
行+=平底(项目,前缀+[键])
返回行
其他:
返回[前缀+[字典]]
定义dict_to_df(字典):
返回pd.DataFrame(平面dict(字典,[]))
当然,由于
json
包,您需要首先将json作为dict导入。一个可能的解决方案:一旦您将json展平到一个数据帧,您可以通过
将标签拆分为新列。您希望每一行都是shiftX
?因此,第1行是shift1
,第2行是shift2
,等等?您可以共享整个json文件吗?或者至少是你想要的2行数据?熊猫数据框不擅长处理层次数据。它们具有类似CSV文件或Excel电子表格的行和列的概念,因此您应该决定数据帧的外观,使用json加载json。加载
,以适合pd.dataframe
的格式将其转换为2D数据,并从中构建数据帧。