dask - чтение_json в фрейм данных ValueError - PullRequest
0 голосов
/ 07 ноября 2019

Минимальный пример здесь: у меня есть файл json xaa.json, содержимое которого выглядит следующим образом (две строки из архива stackoverflow):

[
  {"Id": 11, "Body": "<p>Given a specific <code>DateTime</code> value", "Title": "Calculate relative time in C#", "Comments": "There is the .net package https://github.com/NickStrupat/TimeAgo which pretty much does what is being asked."},
  {"Id": 7888, "Body": "<p>You need to use an <a href=\\"http://en.cppreference.com/w/cpp/io/basic_ifstream\\" rel=\\"noreferrer\\"><code>ifstream</code></a> if you just want to read (use an <code>ofstream</code> to write, or an <code>fstream</code> for both).</p>&#xA;&#xA;<p>To open a file in text mode, do the following:</p>&#xA;&#xA;<pre><code>ifstream in(\\"filename.ext\\", ios_base::in); // the in flag is optional&#xA;

Чтобы открыть файл в двоичном режиме, вам просто нужнодобавьте флаг \\ "двоичный \\".

ifstream in2(\\"filename2.ext\\", ios_base::in | ios_base::binary ); &#xA;

Используйте функцию ifstream.read() для чтения блока символов (в двоичном или текстовом режиме). Используйте функцию getline() (она глобальная) для чтения всей строки.

"," Title ": null," Comments ":" +1 для того, чтобы отметить, что должна использоваться глобальная функция getline ()вместо функции-члена. "}]

Я хочу загрузить такие файлы json в dask dataframe. Я использую:

so_posts_df = dd.read_json('./xaa.json', orient='columns').compute()

Я получаю эту ошибку:

ValueError: Unexpected character found when decoding object value

После просмотра содержимого я понял, что это вызвано "\\" 'материалом, поэтому когда я их удалил (редактор - IntelliJ сказал, что это чистый и приятный на вид JSON) и когда язапустил тот же read_json, он смог прочитать в df и красиво их отобразить.

Итак, у меня есть 2 вопроса: (a) каковы значения для аргумента read_json "ошибки"? (b) какмогу ли я правильно обработать файл json перед чтением в dask dataframe? Похоже, что наличие двойных кавычек и двойного экранирования вызывает проблему.

[Возможно, это вообще не проблема с dask ... ] ...

1 Ответ

1 голос
/ 09 ноября 2019

Это также не работает с pandas.read_json. Я рекомендую сначала попытаться заставить вещи работать хорошо с Pandas, а затем попробовать ту же рабочую нагрузку с dask dataframe. Скорее всего, вы получите гораздо лучшую поддержку, задавая вопросы Пандам.

...