我有一个如下所示的数据框架,其中每个“级别”深入到更详细的信息中,最后一个级别有一个id值
data = [
{'id': 1, 'level_1': 'Animals', 'level_2': 'Carnivores', 'level_3': 'Felidae', 'level_4', 'Siamese Cat'},
{'id': 2, 'level_1': 'Animals', 'level_2': 'Carnivores', 'level_3': 'Felidae', 'level_4', 'Javanese Cat'},
{'id': 3, 'level_1': 'Animals', 'level_2': 'Carnivores', 'level_3': 'Ursidae', 'level_4', 'Polar Bear'},
{'id': 4, 'level_1': 'Animals', 'level_2': 'Carnivores', 'level_3': 'Canidae', 'level_4', 'Labradore Retriever'},
{'id': 5, 'level_1': 'Animals', 'level_2': 'Carnivores', 'level_3': 'Canidae', 'level_4', 'Golden Retriever'}
]
我想把它变成一个嵌套的父/子关系字典,如下所示
var data = {
"name": "Animals",
"children": [
{
"name": "Carnivores",
"children": [
{
"name": "Felidae",
"children": [
{
"id": 1,
"name": "Siamese Cat",
"children": []
},
{
"id": 2,
"name": "Javanese Cat",
"children": []
}
]
},
{
"name": "Ursidae",
"children": [
{
"id": 3,
"name": "Polar Bear",
"children": []
}
]
},
{
"name": "Canidae",
"children": [
{
"id": 4,
"name": "Labradore Retriever",
"children": []
},
{
"id": 5,
"name": "Golden Retriever",
"children": []
}
]
}
]
}
]
}
我已经尝试了几种方法对数据帧进行分组,并在单个行上循环,但还没有找到有效的解决方案。任何帮助都将不胜感激
编辑:必须进行调整,因为结果与预期不完全一致
下面是一个产生预期输出的尝试(如果我没有犯错误,这也不会令人惊讶,因为我在途中犯了几个错误):
乍一看,结果似乎有点不同,但这应该只是由于排序(从打印):
我已经尝试尽可能地通用,但是第一列必须命名为
id
(如您的示例中所示)@Timus的答案与您的意图相似,但是您可能会遇到一些困难,因为每个级别都有一个键
name
和一个键children
。如果这是你想要的,忽略我的回答。但是,如果您想创建一个字典,以便更轻松地搜索唯一键,您可以尝试:它需要将不同的级别设置为索引,最终您将得到一个稍微不同的字典:
相关问题 更多 >
编程相关推荐