Как исправить `` `ValueError: Trailing data``` во время` `` pandas.read_json (...) `` `? - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь прочитать файл JSON в фрейм данных Pandas следующим образом:

def read_JSON_into_dataframe( file_name ):
    with sys.stdin if file_name is None else open( file_name, "r", encoding='utf8', errors='ignore' ) as reader:
        df = pd.read_json( reader )
        print( df.describe(), file = sys.stderr )
        return df

Однако я получаю сообщение об ошибке, для которого нижний кадр стека равен:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json\json.py in _parse_no_numpy(self)
    869         if orient == "columns":
    870             self.obj = DataFrame(
--> 871                 loads(json, precise_float=self.precise_float), dtype=None)
    872         elif orient == "split":
    873             decoded = {str(k): v for k, v in compat.iteritems(

ValueError: Trailing data

Что означают «конечные данные»? Если это относится к какой-то точке в файле JSON, могу ли я что-то сделать, чтобы выяснить, где это и что с ним не так?

1 Ответ

1 голос
/ 11 октября 2019

Я провел такой эксперимент:

  • Взял правильно отформатированный файл JSON.
  • Открыл его с помощью текстового редактора и добавил «xxxx» после последнего «}».
  • Попытка прочитать его, вызвав data = json.load (...) .

Полное сообщение об ошибке:

JSONDecodeError: Extra data: line 112 column 3 (char 6124)

Итак, как вы можете видеть, вы точно указали, в какой строке / столбце был найден этот дополнительный текст.

Посмотрите на это место вашего входного файла. Возможно, он каким-то образом поврежден, например, был удален символ "{".

Чтобы найти источник проблемы, вы даже можете использовать Notepad ++ . Обратите внимание, что если вы поместите курсор до или после «{», то этот символ, а также закрывающий «}» будут отображаться красным цветом. То же самое относится к "[" и "]".

Таким образом, вы можете найти соответствующие открывающие / закрывающие скобки или скобки и выяснить, чего не хватает.

Конечно, использование json.load вряд ли прочитает ваш файл как DataFrame, но, по крайней мере, точно указывает место, где возникла проблема. После того, как вы найдете источник ошибки и исправите его, снова используйте вашу программу.

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