我有一个具有深度嵌套的递归结构的json文件:
{"children": [
"val" = x
"data" = y
"children": [{
"val" = x
"data" = y
"children": [{
....
"val" = x
"data" = y
"children": [{
"val" = x
"data" = y
"children": [{
....
按以下方式使用熊猫json_normalize:
json_normalize(data = self.data["children"], record_path="children")
赋予数据框第一个层次为扁平的,但更深层次的层次保留在数据框中的json字符串。
我如何展平数据框,以便将整个json树解压并展平?
答案 0 :(得分:0)
提供json的格式正确,并且在所有级别上都具有相同的结构,您可以通过将关键字的 List 传递给每个级别的json_normalize来提取所有数据。
json = {'children': [{
'val': 1,
'data': 2,
'children': [{
'val': 3,
'data' : 4,
'children': [{'val' : 4,
'data' : 5}],
}],
},{
'val' : 6,
'data' : 7,
'children': [{
'val' : 8,
'data' : 9,
'children': [{'val' : 10,
'data' : 11}],
}]
}]}
for i in range(1,3):
print( json_normalize(data = json,record_path=['children']*i) )
这将提供以下输出,您可以根据需要将其递归添加到单个 DataFrame 中。
children data val
0 [{'val': 3, 'data': 4, 'children': [{'val': 4,... 2 1
1 [{'val': 8, 'data': 9, 'children': [{'val': 10... 7 6
children data val
0 [{'val': 4, 'data': 5}] 4 3
1 [{'val': 10, 'data': 11}] 9 8
data val
0 5 4
1 11 10