Невозможно преобразовать 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».

Несмотря ни на что, я попытался дать ему строку в любом случае, и это привело к той же ошибке.

Я попытался создать тестовый сценарий, следуя точным шагам из книг и других учебных пособий и / или сообщений, и это просто приводит к той же ошибке. На этом этапе мне нужно простое решение как можно скорее. Я открыт для предложений, но я должен подчеркнуть, что у меня нет времени тратить на изучение совершенно новой библиотеки.

Для первой попытки правильная строка – это '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' .