Как записать структурированные данные JSON в текстовый файл на Python? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь записать мои структурированные данные JSON в файл JSON. js dataframe содержит данные JSON, например:

[{"variable":"Latitude","min":26.845043,"Q1":31.1972475},{"variable":"Longitude","min":-122.315002,"Q1":-116.557795},{"variable":"Zip","min":20910.0,"Q1":32788.5}]

Но когда я записываю его в файл, данные сохраняются по-другому. Не могли бы вы помочь мне сохранить результат, как он есть в кадре данных (js)?

"[{\"variable\":\"Latitude\",\"min\":26.845043,\"Q1\":31.1972475},{\"variable\":\"Longitude\",\"min\":-122.315002,\"Q1\":-116.557795},{\"variable\":\"Zip\",\"min\":20910.0,\"Q1\":32788.5}]"

Код:

import csv
import json
import pandas as pd    
df = pd.read_csv(r'C:\Users\spanda031\Downloads\DQ_RESUlT.csv')
js = df.to_json(orient="records")
print(js)

# Read JSON file
with open('C:\\Users\\spanda031\\Downloads\\data.json', 'w') as data_file:
    json.dump(js,data_file)

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018
import pandas as pd
import json
df = pd.read_csv("temp.csv")
# it will dump json to file
df.to_json("filename.json", orient="records")

Вывести как filename.json :

[{"variable":"Latitude","min":26.84505,"Q1":31.19725},{"variable":"Longtitude","min":-122.315,"Q1":-116.558},{"variable":"Zip","min":20910.0,"Q1":32788.5}]
0 голосов
/ 16 ноября 2018

Разговор так дешев, почему бы не показать вам код?

import csv
import json
import pandas as pd    
df = pd.read_csv(r'C:\Users\spanda031\Downloads\DQ_RESUlT.csv')
// where magic happends! :)
js = df.to_dict(orient="records")
print(js)

# Read JSON file
with open('C:\\Users\\spanda031\\Downloads\\data.json', 'w') as data_file:
    json.dump(js,data_file)
0 голосов
/ 16 ноября 2018

Я думаю, что вы дважды кодируете свои данные - df.to_json преобразует данные в строку JSON.Затем вы запускаете json.dump, который затем снова кодирует эту уже закодированную строку как JSON - что приводит к оборачиванию вашего существующего JSON в кавычки и экранированию всех внутренних кавычек с обратной косой чертой. В итоге вы получаете JSON-inside-JSON,что не является необходимым или нежелательным.

Вы должны использовать один или другой из этих методов, но не оба вместе.Вероятно, проще всего использовать df.to_json для точной сериализации данных в кадре, а затем просто записать строку непосредственно в файл в виде текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...