使用 pandas.read_json 时出现 ValueError
Posted
技术标签:
【中文标题】使用 pandas.read_json 时出现 ValueError【英文标题】:ValueError when using pandas.read_json 【发布时间】:2015-01-30 04:50:16 【问题描述】:我制作了一个 250MB 的 json 文件,应该如下所示:
[ "A":"uniquevalue0", "B":[1,2,3],
"A":"uniquevalue1", "B":[1],
"A":"uniquevalue2", "B":[1,2,3,4] ]
“B”值可以是变量 len >= 1。This 表示我有有效的 JSON。
我打电话
df = pandas.read_json('ut1.json', orient = 'records', dtype="A":str, "B":list)
Here 是文档。读入熊猫数据框时,我得到以下回溯:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/.../pandas/io/json.py", line 198, in read_json
date_unit).parse()
File "/.../pandas/io/json.py", line 266, in parse
self._parse_no_numpy()
File "/.../pandas/io/json.py", line 496, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None)
ValueError: Unexpected character found when decoding 'true'
想不出哪里出了问题。 The python file that is throwing the error 没那么有用。
【问题讨论】:
该代码与给定的 json 文件完美配合。 【参考方案1】:我有同样的错误信息,我通过使用绝对路径解决了它。
import os
basePath = os.path.dirname(os.path.abspath(__file__))
df = pandas.read_json(basePath + '/ut1.json', orient = 'records', dtype="A":str, "B":list)
这对我有用!
【讨论】:
我试过这样做,但它给了我一个不同的错误:“ValueError:预期的对象或值”。我尝试使用 jsonlint.com 验证 JSON,它说它是一个有效的 json 文件。我不明白这是什么问题。 这很好用。但是尝试使用 os.path.join(basePath, '/ut1.json') 而不是字符串连接。【参考方案2】:就我而言,路径是错误的。
确保检查您的当前工作目录,将其放在pandas.read_json
之前:
import os
print(os.getcwd())
【讨论】:
【参考方案3】:在尝试了@learn2day 的答案后,我仍然无法从那里得到一个好的结果,但我确实尝试了以下代码,一切都对我有用。 (PS:我正在打开一个JSON文件,其中出现了汉字是UTF-8字符-汉字)
pandas.read_json(open("ut1.json", "r", encoding="utf8"))
encoding="utf8"
是这段代码的关键部分。
【讨论】:
【参考方案4】:我遇到了同样的问题,然后意识到问题在于将文本从浏览器复制并粘贴到我的文件中。它引入了回车,以便将给定键的每一行分成多行。这就是问题所在。希望这对某人有帮助!
【讨论】:
【参考方案5】:对我来说,问题是文件开头有一个 UTF-8 BOM 字符。使用以下编码解决了这个问题:
df = pd.read_json(r'C:\temp\foo.jsonl', lines=True, encoding='utf-8-sig')
【讨论】:
【参考方案6】:我今天在调用 pandas.read_json('my_file.json') 时收到“值错误:预期的对象或值”。我之前用相同的文件运行过这段代码,所以很担心今天它不能工作。后来不知什么原因发现,json文件不在同一个目录下。然后,我通过右键单击文件链接从 git 下载了文件。那是一个坏主意:(。我猜json文件没有正确编码,所以即使json文件在同一个目录中,我也会不断收到同样的错误。最后,我删除了json文件,克隆了原始文件git repo 获取 json 文件并再次将其放在同一个目录中。然后,这个 pandas.read_json 确实有效。所以,首先请确保 json 文件存在于正确的目录中,然后确保该文件不存在损坏。
【讨论】:
【参考方案7】:发布这个是因为上面的答案与我的问题不匹配这个错误:它只是在我阅读一个很长的字符串文档时发生,我认为这将是有效的 json 格式但包含nan
作为从 python 导出到字符串而它对于有效的 json,应该是 "null"
。如果该文档不是使用 json 包创建的,则此错误消息可能指示错误值。
【讨论】:
【参考方案8】:我在 linux 上运行代码时遇到了同样的错误。我意识到给 read_csv 的文件名是 .JSON 而不是 .json。将其更改为小写对我有用。
【讨论】:
【参考方案9】:试试这个
df = pd.read_json('file.jsonl', lines=True) #if its a jsonl file
【讨论】:
以上是关于使用 pandas.read_json 时出现 ValueError的主要内容,如果未能解决你的问题,请参考以下文章
pandas read_json时ValueError: Expected object or value的解决方案
pandas read_json时ValueError: Expected object or value的解决方案
在 Pandas UnicodeDecodeError 中无法使用 pandas.read_json() 解码 JSON 文件中的 Unicode Ascii
如何让 pandas.read_json 将此 API 返回识别为有效的 .json?