1

我遇到了该json_normalize功能的问题。指定项目可能缺少的键时,会引发键错误。如您所见,listPeople文件中并不总是存在。

df = {'Links':[{'id' : 1,'Gender' : 'X'},
         {'id' : 2,'Gender' : 'Y','listPeople' : [{'Person':'John', 'Age' : 42}] }
         ]
        }
test = json_normalize(df, record_path= "listPeople", errors = "ignore")
print(test)

根据文档,使用errors = "ignore"应该可以解决问题,但这似乎不起作用?

预期输出:

Person   Age
  NULL  NULL
  John    42
4

1 回答 1

3

errors = "ignore"适用于缺少 dict 键,但您缺少一个可能包含多个 dicts 的列表,并且您希望将其传递为record_path. listPeople您可以用空值填充缺失:

[i.update({'listPeople':[{'Person':None,'Age':None}]}) for i in df['Links'] if 'listPeople' not in i.keys()]

test = pd.json_normalize(df['Links'], record_path=['listPeople'], meta=['id','Gender'], errors = "ignore")

结果:

年龄 ID 性别
0 没有任何 1 X
1 约翰 42 2
于 2021-03-13T18:49:17.017 回答