GOOGLE ADS

jueves, 21 de abril de 2022

Normalizar JSON: asignar clases/matriz a columnas

Me gustaría transformar un JSON con la siguiente entrada:

{
"039.png": [
"finding1"
],
"006.png": [
"finding1",
"finding2"
],
"012.png": [
"nofinding"
]}

en un marco de datos con el siguiente diseño:

| image | finding1 | finding2 | nofinding |
| ------- | -------- | -------- | --------- |
| 039.png | true | false | false |
| 006.png | true | true | false |
| 012.png | false | false | true |

Por ahora he probado:

import pandas as pd
import json
from pandas.io.json import json_normalize
with open('file.json') as data_file:
data = json.load(data_file)
df = pd.json_normalize(data)
df = df.transpose()
df.head()

Sin embargo, esto resulta en:

039.png [finding1]
006.png [finding1, finding2]
012.png [nofinding]

Además, también me gustaría programar la ruta de retorno para poder crear el formato JSON dado a partir del formato de tabla deseado.

Muchas gracias de antemano


Solución del problema

Es sencillo con get_dummies:

data = {
"039.png": [
"finding1"
],
"006.png": [
"finding1",
"finding2"
],
"012.png": [
"nofinding"
]}
df = pd.DataFrame.from_dict(data, orient='index')
print(pd.get_dummies(df, prefix='', prefix_sep='', dtype=bool))

Producción:

 finding1 nofinding finding2
039.png True False False
006.png True False True
012.png False True False

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...