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?
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”
}
}
}