如何在``pandas.read_json(...)''期间修复``ValueError:Trailing data''?

时间:2019-10-11 17:46:01

标签: json python-3.x pandas

我正在尝试将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文件中的某个点,我可以做些什么来弄清楚那是什么,什么地方出了问题?

2 个答案:

答案 0 :(得分:7)

df = pd.read_json(“ filename.json”,行= True)

答案 1 :(得分:1)

我做了这样的实验:

  • 获取格式正确的JSON文件。
  • 使用文本编辑器将其打开,并在最后的“}”之后添加“ xxxx”。
  • 尝试读取它,调用 data = json.load(...)

完整的错误消息是:

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

因此,正如您所看到的,您已经精确地指出了在哪一行/哪一列 找到了这些多余的文字。

看看输入文件的这个位置。 它可能以某种方式损坏,例如一些“ {”字符 删除。

要找到问题的根源,您甚至可以使用 Notepad ++ 。 请注意,如果将光标放在“ {”之后的前面,则 此字符以及结束的“}”都以红色显示。 “ [”和“]”也一样。

这样,您可以找到匹配的打开/关闭大括号或括号 并找出缺少的东西。

当然,使用 json.load 不太可能读取您的文件 作为DataFrame,但至少可以准确地指示位置 问题发生的位置。 找到错误源并进行更正后,再次使用您的程序。