Использование функции json_normalize при отсутствии ключа

Я столкнулся с проблемой 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

1 ответ

errors = "ignore" работает для отсутствующих ключей dict, но вам не хватает списка, который может содержать несколько dict, и который вы хотите передать как 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")

Результат:

Другие вопросы по тегам