pandas.io.json.json_normalize
-
pandas.io.json.json_normalize(data: Union[Dict, List[Dict]], record_path: Union[str, List, NoneType] = None, meta: Union[str, List, NoneType] = None, meta_prefix: Union[str, NoneType] = None, record_prefix: Union[str, NoneType] = None, errors: Union[str, NoneType] = 'raise', sep: str = '.', max_level: Union[int, NoneType] = None)[source] -
Нормализация полуструктурированных JSON-данных в плоскую таблицу.
Параметры: -
data : dict or list of dicts -
Десериализованные JSON-объекты.
-
record_path : str or list of str, default None -
Путь в каждом объекте к списку записей. Если не указан, данные будут предполагаться как массив записей.
-
meta : list of paths (str or list of str), default None -
Поля, используемые в качестве метаданных для каждой записи в результирующей таблице.
-
meta_prefix : str, default None -
Если True, префикс записей состоит из точки (?), например, foo.bar.field, если meta = [‘foo’, ‘bar’].
-
record_prefix : str, default None -
Если True, префикс записей состоит из точки (?), например, foo.bar.field, если путь к записям [‘foo’, ‘bar’].
-
errors : {‘raise’, ‘ignore’}, default ‘raise’ -
Настройка обработки ошибок.
- ‘ignore’ : пропустит KeyError, если ключи, указанные в meta, не всегда присутствуют.
- ‘raise’ : вызовет KeyError, если ключи, указанные в meta, не всегда присутствуют.
Новая в версии 0.20.0.
-
sep : str, default ‘.’ -
Вложенные записи сгенерируют имена, разделённые символом sep. Например, для sep=’.’, {‘foo’: {‘bar’: 0}} -> foo.bar.
Новая в версии 0.20.0.
-
max_level : int, default None -
Максимальное количество уровней (глубина словаря) для нормализации. Если None, нормализует все уровни.
Новая в версии 0.25.0.
Возвращает: -
frame : DataFrame - Нормализует полуструктурированные JSON-данные в плоскую таблицу.
Примеры
>>> from pandas.io.json import json_normalize >>> data = [{'id': 1, 'name': {'first': 'Coleen', 'last': 'Volk'}}, ... {'name': {'given': 'Mose', 'family': 'Regner'}}, ... {'id': 2, 'name': 'Faye Raker'}] >>> json_normalize(data) id name name.family name.first name.given name.last 0 1.0 NaN NaN Coleen NaN Volk 1 NaN NaN Regner NaN Mose NaN 2 2.0 Faye Raker NaN NaN NaN NaN>>> data = [{'id': 1, ... 'name': "Cole Volk", ... 'fitness': {'height': 130, 'weight': 60}}, ... {'name': "Mose Reg", ... 'fitness': {'height': 130, 'weight': 60}}, ... {'id': 2, 'name': 'Faye Raker', ... 'fitness': {'height': 130, 'weight': 60}}] >>> json_normalize(data, max_level=0) fitness id name 0 {'height': 130, 'weight': 60} 1.0 Cole Volk 1 {'height': 130, 'weight': 60} NaN Mose Reg 2 {'height': 130, 'weight': 60} 2.0 Faye RakerНормализует вложенные данные до уровня 1.
>>> data = [{'id': 1, ... 'name': "Cole Volk", ... 'fitness': {'height': 130, 'weight': 60}}, ... {'name': "Mose Reg", ... 'fitness': {'height': 130, 'weight': 60}}, ... {'id': 2, 'name': 'Faye Raker', ... 'fitness': {'height': 130, 'weight': 60}}] >>> json_normalize(data, max_level=1) fitness.height fitness.weight id name 0 130 60 1.0 Cole Volk 1 130 60 NaN Mose Reg 2 130 60 2.0 Faye Raker>>> data = [{'state': 'Florida', ... 'shortname': 'FL', ... 'info': {'governor': 'Rick Scott'}, ... 'counties': [{'name': 'Dade', 'population': 12345}, ... {'name': 'Broward', 'population': 40000}, ... {'name': 'Palm Beach', 'population': 60000}]}, ... {'state': 'Ohio', ... 'shortname': 'OH', ... 'info': {'governor': 'John Kasich'}, ... 'counties': [{'name': 'Summit', 'population': 1234}, ... {'name': 'Cuyahoga', 'population': 1337}]}] >>> result = json_normalize(data, 'counties', ['state', 'shortname', ... ['info', 'governor']]) >>> result name population state shortname info.governor 0 Dade 12345 Florida FL Rick Scott 1 Broward 40000 Florida FL Rick Scott 2 Palm Beach 60000 Florida FL Rick Scott 3 Summit 1234 Ohio OH John Kasich 4 Cuyahoga 1337 Ohio OH John Kasich>>> data = {'A': [1, 2]} >>> json_normalize(data, 'A', record_prefix='Prefix.') Prefix.0 0 1 1 2Возвращает нормализованные данные со столбцами, префикс которых состоит из заданной строки.
-
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.io.json.json_normalize.html