如何在 ```pandas.read_json(...)` 期间修复 ```ValueError: Trailing data```?
Posted
技术标签:
【中文标题】如何在 ```pandas.read_json(...)` 期间修复 ```ValueError: Trailing data```?【英文标题】:How to fix ```ValueError: Trailing data``` during ```pandas.read_json(...)```? 【发布时间】:2020-02-09 06:33:22 【问题描述】:我正在尝试将 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 文件中的某个点,我可以做些什么来找出它在哪里以及它有什么问题?
【问题讨论】:
使用 json 验证器? duckduckgo.com/?q=json+validator&atb=v168-1&ia=answer 【参考方案1】:我做了这样的实验:
获取格式正确的 JSON 文件。 用文本编辑器打开它并在最后的“”后添加“xxxx”。 尝试读取它,调用 data = json.load(...)。完整的错误信息是:
JSONDecodeError: Extra data: line 112 column 3 (char 6124)
如您所见,您已准确指出在哪一行/哪一列 发现这个多余的文字。
看看你输入文件的这个地方。 可能它以某种方式损坏,例如一些“”字符是 已删除。
要找到问题的根源,您甚至可以使用 Notepad++。 请注意,如果您将光标放在“”之前或之后,则 此字符以及结束的“”显示为红色。 “[”和“]”也是如此。
因此,您可以通过这种方式找到匹配的左/右大括号或方括号 并找出缺少的东西。
当然,json.load 的用法不太可能读取你的文件 作为一个DataFrame,但至少它准确地表明了这个地方 问题发生的地方。 找到错误来源并更正后,再次使用您的程序。
【讨论】:
使用 JSON 验证器 (jsonlint.com) 我发现 JSON 确实存在多种问题,但在emacs
中很容易修复。一旦我这样做了,read_json
就可以工作了。【参考方案2】:
df = pd.read_json ("filename.json", lines = True)
【讨论】:
您应该提供有关此解决方案的更多信息。 就我而言,我试图读取 Json Per line 文件并且 df = pd.read_json ("filename.json", lines = True) 解决了这个问题 设置lines=True
将文件作为每行的 json 对象读取,请参阅 documentation for pandas.read_json
。以上是关于如何在 ```pandas.read_json(...)` 期间修复 ```ValueError: Trailing data```?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pandas read_json 读取 ADSB json 数据? [复制]
在 Pandas UnicodeDecodeError 中无法使用 pandas.read_json() 解码 JSON 文件中的 Unicode Ascii