Encontrei esta postagem que inicialmente parecia ser exatamente o que eu estava procurando, mas não me ajudou: Adicionando cabeçalho e rodapé à saída JSON do Python
Tenho um arquivo csv que leio como Pandas dataframe:
import os
import csv
import json
import pandas as pd
csvFilePath = "Mypath"
track = pd.read_csv(csvFilePath, header = 0, skiprows = 0, delimiter = ";")
O exemplo csv se parece com isto:
Param1;Param2;name;lat;lon;altitude;vert_rate;track;speed;category;Param3;Param4;Param5
999999;9999;rocket;57.878696;11.160667;1089;0;137;2;99;999;16;0
999999;9999;rocket;57.878796;11.160668;2543.963336;152638.0483;137;2;99;999;15;0
999999;9999;rocket;57.878896;11.160670;4226.050004;126781.7063;137;2;99;999;14;0
999999;9999;rocket;57.878796;11.160669;6091.207544;121824.349;137;2;99;999;13;0
999999;9999;rocket;57.878696;11.160667;8098.097372;121471.6581;137;2;99;999;12;0
Agora eu gostaria de proteger esse dataframe com um cabeçalho adicional como um arquivo JSON: O cabeçalho adicional se parece com este dicionário:
headlines={
"now": 1636008051.9,
"messages": 6236,
}
O JSON de destino deve conter as informações fornecidas por "headlines" (mas sem seu nome) e o conteúdo do dataframe:
{
"now": 1636008051.9,
"messages": 6236,
"track": [
{
"Param1": 999999,
"Param2": "9999",
"name": "rocket",
"lat": 57.878696,
"lon": 11.160667,
"altitude": 1089,
"vert_rate": 0,
"track": 137,
"speed": 2,
"category": 99,
"Param3": 999,
"Param4": 16,
"Param5": 0
}
{
"Param1": 999999,
"Param2": "9999",
"name": "rocket",
"lat": 57.878796,
"lon": 11.160668,
"altitude": 2543.963336,
"vert_rate": 152638.0483,
"track": 137,
"speed": 2,
"category": 99,
"Param3": 999,
"Param4": 15,
"Param5": 0
}
{
"Param1": 999999,
"Param2": "9999",
"name": "rocket",
"lat": 57.878896,
"lon": 11.160670,
"altitude": 4226.050004,
"vert_rate": 126781.7063,
"track": 137,
"speed": 2,
"category": 99,
"Param3": 999,
"Param4": 14,
"Param5": 0
}
{...and so on...}
]
}
O próprio dataframe eu posso simplesmente transformar em JSON assim:
json = track.to_json(path_out + "result.json", orient='records')
mas aqui não sei como adicionar as linhas precedentes do dict "header" Como posso juntar o dicionário e o csv para gerar o JSON? Ou há uma maneira mais simples? Ou alguma dica para uma postagem que não encontrei? Preciso fazer isso no pandas, pois o csv-dataframe será necessário posteriormente.
Crie um dicionário, atribua-o como uma nova chave de dicionário e exporte com
json.dump
:Ou como uma string:
Saída: