Normalice los datos JSON semiestructurados en una tabla plana.
- Parámetros
-
-
datos : dictado o lista de dictados
-
Objetos JSON no serializados.
-
record_path : str o lista de str, por defecto Ninguno
-
Ruta en cada objeto a la lista de registros. Si no se pasa, se asumirá que los datos son una matriz de registros.
-
meta : lista de rutas (str o lista de str), por defecto Ninguno
-
Campos para usar como metadatos para cada registro en la tabla resultante.
-
meta_prefijo : str, predeterminado Ninguno
-
Si es verdadero, prefije los registros con una ruta de puntos (?), Por ejemplo, foo.bar.field si meta es [‘foo’, ‘bar’].
-
prefijo_registro : str, predeterminado Ninguno
-
Si es Verdadero, prefija los registros con una ruta de puntos (?), Por ejemplo, foo.bar.field si la ruta a los registros es [‘foo’, ‘bar’].
-
errores : {‘subir’, ‘ignorar’}, ‘subir’ predeterminado
-
Configura el manejo de errores.
-
sep : str, predeterminado ‘.’
-
Los registros anidados generarán nombres separados por sep. por ejemplo, para sep = ‘.’, {‘foo’: {‘bar’: 0}} -> foo.bar.
-
Máximo nivel : int, predeterminado Ninguno
-
Número máximo de niveles (profundidad de dictado) para normalizar. si es Ninguno, normaliza todos los niveles.
Nuevo en la versión 0.25.0.
- Devoluciones
-
-
cuadro : Marco de datos
- Normalice los datos JSON semiestructurados en una tabla plana.
Ejemplos de
>>> data = [{'id': 1, 'name': {'first': 'Coleen', 'last': 'Volk'}},
... {'name': {'given': 'Mose', 'family': 'Regner'}},
... {'id': 2, 'name': 'Faye Raker'}]
>>> pd.json_normalize(data)
id name.first name.last name.given name.family name
0 1.0 Coleen Volk NaN NaN NaN
1 NaN NaN NaN Mose Regner NaN
2 2.0 NaN NaN NaN NaN Faye Raker
>>> 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}}]
>>> pd.json_normalize(data, max_level=0)
id name fitness
0 1.0 Cole Volk {'height': 130, 'weight': 60}
1 NaN Mose Reg {'height': 130, 'weight': 60}
2 2.0 Faye Raker {'height': 130, 'weight': 60}
Normaliza los datos anidados hasta el nivel 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}}]
>>> pd.json_normalize(data, max_level=1)
id name fitness.height fitness.weight
0 1.0 Cole Volk 130 60
1 NaN Mose Reg 130 60
2 2.0 Faye Raker 130 60
>>> 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 = pd.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]}
>>> pd.json_normalize(data, 'A', record_prefix='Prefix.')
Prefix.0
0 1
1 2
Devuelve datos normalizados con columnas prefijadas con la cadena dada.