es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convirtiendo CSV a JSON con Pandas.

Tengo los datos en formato CSV, por ejemplo:

La primera fila es el número de columna, ignoraremos eso.
A partir de la segunda fila, comenzando en Col_4, se muestran el número de días.
A partir de la tercera fila: Col1 y Col2 son coordenadas (lon, lat), Col3 es un valor estadístico, Col4 y siguientes son mediciones.

Como puedes ver, este formato es un lío confuso. Me gustaría convertir esto a JSON de la siguiente manera:

{“puntos”:{
“fechas”: [“20190103”, “20190205”],
“0”:{
“lon”: “-8.072557”,
“lat”: “41.13702”,
“mediciones”: [“-0.191792″,”-10.543130″],
“val”: “-1”
},
“1”:{
“lon”: “-8.075557”,
“lat”: “41.15702”,
“mediciones”: [“-1.191792″,”-2.543130″],
“val”: “-9”
}
}
}

En resumen, lo que he hecho hasta ahora es leer el CSV en un DataFrame de Pandas:

df = pandas.read_csv(“sample.csv”)

Puedo extraer las fechas en un Array de Numpy con:

dates = df.iloc[0][3:].to_numpy()

Puedo extraer las mediciones de todos los puntos con:

measurements_all = df.iloc[1:,3:].to_numpy()

Y la lon, lat y val, respectivamente, con:

lon_all = df.iloc[1:,0:1].to_numpy()
lat_all = df.iloc[1:,1:2].to_numpy()
val_all = df.iloc[1:,2:3].to_numpy()

¿Alguien puede explicar cómo puedo formatear esta información en una estructura idéntica al ejemplo de .json?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar un bucle para iterar a través de los datos y crear la estructura JSON que desee. Por ejemplo:

    python
    datos = {‘puntos’: {‘fechas’: fechas.tolist()}}
    for i in range(len(lon_total)):
    datos[‘puntos’][str(i)] = {
    ‘lon’: lon_total[i][0],
    ‘lat’: lat_total[i][0],
    ‘mediciones’: mediciones_total[i].tolist(),
    ‘val’: val_total[i][0]
    }

    Esto creará una estructura JSON que se ve así:

    json
    {
    “puntos”: {
    “fechas”: [
    “20190103”,
    “20190205”
    ],
    “0”: {
    “lon”: “-8.072557”,
    “lat”: “41.13702”,
    “mediciones”: [
    “-0.191792”,
    “-10.543130”
    ],
    “val”: “-1”
    },
    “1”: {
    “lon”: “-8.075557”,
    “lat”: “41.15702”,
    “mediciones”: [
    “-1.191792”,
    “-2.543130”
    ],
    “val”: “-9”
    }
    }
    }

Comments are closed.