У меня есть вложенный список со словарем.Ниже приведен только первый элемент списка
{'id': 'abcde',
'authorization': None,
'operation_type': 'xx',
'method': 'card',
'transaction_type': 'asd',
'card': {'type': 'dd',
'brand': 'vv',
'address': {'line1': 'xxxxxxx',
'line2': '',
'line3': '',
'state': 'xx',
'city': 'xxx',
'postal_code': '12345',
'country_code': 'xx'},
'card_number': '123456XXXXXX7890',
'holder_name': 'name user,
'expiration_year': '20',
'expiration_month': '02',
'allows_charges': True,
'allows_payouts': True,
'bank_name': 'abc bank',
'bank_code': '000'},
'status': 'fgh',
'conciliated': True,
'creation_date': '2018-09-23T23:58:17-05:00',
'operation_date': '2018-09-23T23:58:17-05:00',
'description': 'asdmdefdsa',
'error_message': 'sdaskjflj',
'order_id': 'ashdgjasdfhk',
'amount': 418.0,
'customer': {'name': 'abc',
'last_name': 'xyz',
'email': 'abcdef@hotmail.com',
'phone_number': '12345678',
'address': None,
'creation_date': '2018-09-23T23:58:18-05:00',
'external_id': None,
'clabe': None},
'fee': {'amount': 0.56, 'tax': 0.91, 'currency': 'XXX'},
'currency': 'XXX'},
{'id': 'abcde',
'authorization': None,
'operation_type': 'xx',
'method': 'card',
'transaction_type': 'asd',
'card': {'type': 'dd',
'brand': 'vv',
'address': {'line1': 'xxxxxxx',
'line2': '',
'line3': '',
'state': 'xx',
'city': 'xxx',
'postal_code': '12345',
'country_code': 'xx'},
'card_number': '123456XXXXXX7890',
'holder_name': 'name user,
'expiration_year': '20',
'expiration_month': '02',
'allows_charges': True,
'allows_payouts': True,
'bank_name': 'abc bank',
'bank_code': '000'},
'status': 'fgh',
'conciliated': True,
'creation_date': '2018-09-23T23:58:17-05:00',
'operation_date': '2018-09-23T23:58:17-05:00',
'description': 'asdmdefdsa',
'error_message': 'sdaskjflj',
'order_id': 'ashdgjasdfhk',
'amount': 418.0,
'customer': {'name': 'abc',
'last_name': 'xyz',
'email': 'abcdef@hotmail.com',
'phone_number': '12345678',
'address': None,
'creation_date': '2018-09-23T23:58:18-05:00',
'external_id': None,
'clabe': None},
'fee': {'amount': 0.56, 'tax': 0.91, 'currency': 'XXX'},
'currency': 'XXX'}
Я хочу нормализовать данные в dataframe.Я написал код как: json_normalize (d).Но я получаю следующую ошибку:
--------------------------------------------------------------------------- KeyError Traceback (последний вызов последним) в() ----> 1 df = json_normalize (data)
/ anaconda3 / lib / python3.6 / site-packages / pandas / io / json / normalize.py в json_normalize (данные, запись_путь, мета, meta_prefix, record_prefix, errors, sep) 201 # TODO: обрабатывать значения записей, которые являются списками, по крайней мере, ошибка 202 # разумно -> 203 data = nested_to_record (data, sep = sep) 204 возвращать DataFrame (data) 205 elif not isinstance(запись_путь, список):
/ anaconda3 / lib / python3.6 / site-packages / pandas / io / json / normalize.py в nested_to_record (ds, prefix, sep, level) 86 остальное: 87 v= new_d.pop (k) ---> 88 new_d.update (nested_to_record (v, newkey, sep, level + 1)) 89 new_ds.append (new_d) 90
/ anaconda3 / lib / python3.6 / site-packages / pandas / io / json / normalize.py в nested_to_record (ds, prefix, sep, level) 82 new_d [newkey] = v 83, если v - None: # вывести ключ, если thе значение None ---> 84 new_d.pop (k) 85 продолжить 86 else:
KeyError: 'address'
Я понял это, потому что адрес в None, коддает мне ошибку.Но я не знаю, как это исправить.Любая помощь в этом отношении будет высоко оценена.Заранее спасибо.(Обратите внимание, что данные являются фиктивными данными)