Невозможно преобразовать pandas DataFrame в json, используя to_json
Я знаю, что есть несколько других сообщений о переполнении стека по этой же проблеме, однако ни одно решение, найденное на этих сообщениях, или любое другое сообщение, которое я нашел в Интернете, не работает. Я следил за многочисленными учебниками, видеороликами, книгами и сообщениями Stack Overflow на пандах, и все упомянутые решения потерпели неудачу.
Неудача заключается в том, что все решения, которые я нашел, верны или, по крайней мере, должны быть; Я довольно новичок в пандах, поэтому мой единственный вывод заключается в том, что я, вероятно, что-то делаю неправильно.
Вот документация pandas, которую я начал с: Pandas to_json Doc . Я не могу заставить pandas to_json преобразовать pandas DataFrame в json-объект или json-строку.
В принципе, я хочу преобразовать строку csv в DataFrame, а затем преобразовать этот DataFrame в json-объект или json-строку (мне все равно, какой). Затем, как только у меня будет моя структура данных json, я собираюсь привязать ее к гистограмме D3.js
Вот пример того, что я пытаюсь сделать:
# Declare my csv string (Works): csvStr = '"pid","dos","facility","a1c_val"\n"123456","2013-01-01 13:37:00","UOFU",5.4\n"65432","2014-01-01 14:32:00","UOFU",5.8\n"65432","2013-01-01 13:01:00","UOFU",6.4' print (csvStr) # Just checking the variables contents # Read csv and convert to DataFrame (Works): csvDf = pandas.read_csv(StringIO.StringIO(csvStr)) print (csvDf) # Just checking the variables contents # Convert DataFrame to json (Three of the ways I tried - None of them work): myJSON = csvDf.to_json(path_or_buf = None, orient = 'record', date_format = 'epoch', double_precision = 10, force_ascii = True, date_unit = 'ms', default_handler = None) # Attempt 1 print (myJSON) # Just checking the variables contents myJSON = csvDf.to_json() # Attempt 2 print (myJSON) # Just checking the variables contents myJSON = pandas.io.json.to_json(csvDf) print (myJSON) # Just checking the variables contents
Ошибка, которую я получаю:
аргумент 1 должен быть строковым или только для чтения символьным буфером, а не DataFrame
Это вводит в заблуждение, поскольку в документации указано, что «A Series или DataFrame могут быть преобразованы в действительную строку JSON».
Несмотря ни на что, я попытался дать ему строку в любом случае, и это привело к той же ошибке.
Я попытался создать тестовый сценарий, следуя точным шагам из книг и других учебных пособий и / или сообщений, и это просто приводит к той же ошибке. На этом этапе мне нужно простое решение как можно скорее. Я открыт для предложений, но я должен подчеркнуть, что у меня нет времени тратить на изучение совершенно новой библиотеки.
- Навигация многомерных массивов JSON в Python
- Python – json без пробелов
- Как спрятать рамку данных pandas с некоторыми столбцами как json?
- Обновление комплекса JSON-объекта в Python
- QueryDict в строку теряет список в JSON
Для первой попытки правильная строка – это 'records'
не 'record'
Это сработало для меня:
myJSON = csvDf.to_json(path_or_buf = None, orient = 'records', date_format = 'epoch', double_precision = 10, force_ascii = True, date_unit = 'ms', default_handler = None) # Attempt 1
Печать дает:
[{"pid":123456,"dos":"2013-01-01 13:37:00","facility":"UOFU","a1c_val":5.4}, {"pid":65432,"dos":"2014-01-01 14:32:00","facility":"UOFU","a1c_val":5.8}, {"pid":65432,"dos":"2013-01-01 13:01:00","facility":"UOFU","a1c_val":6.4}]
Оказывается, проблема была связана с моей собственной глупой ошибкой. Проверяя мое использование to_json, я копирую и вставляю пример в свой код и ушел оттуда. Думая, что я прокомментировал этот код, я приступил к использованию to_json с моими тестовыми данными. Оказывается, ошибка, которую я получал, выкидывалась из кода примера, который был у меня скопирован и вставлен. Как только я удалил все и переписал его, используя мои тестовые данные, он сработал.
Однако, как указал user667648 (Bair), в моем коде была еще одна ошибка. orient
парам должен был быть orient = 'records'
и NOT orient = 'record'
.
- Метод DRF 3.0.1: .create () не поддерживает записываемые вложенные поля
- Простейший pub-sub для golang <-> связи python, возможно, через машины?
- бутылка request.json получает 405 на почте
- Объект JSON не может быть декодирован – tastypie – curl
- Как использовать модуль «json» для чтения в одном объекте JSON за раз?
- JSON сериализует Django Queryset со значениями, вызываемыми. Что-то не так с моим подходом?
- Как читать содержимое веб-сайта?
- Веб-сервис JSONP с помощью python
- Как динамически строить объект JSON с помощью Python?
- Нет модуля с именем «json» после установки simplejson
- сумка-сумка, не использующая все сердечники? альтернативы?