Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas.read_json时出现ValueError_Python_Json_Pandas - Fatal编程技术网

Python 使用pandas.read_json时出现ValueError

Python 使用pandas.read_json时出现ValueError,python,json,pandas,Python,Json,Pandas,我制作了一个250MB的json文件,应该如下所示: [ {"A":"uniquevalue0", "B":[1,2,3]}, {"A":"uniquevalue1", "B":[1]}, {"A":"uniquevalue2", "B":[1,2,3,4]} ] 其中“B”值可以是变量len>=1。说我有有效的JSON 我打电话 df = pandas.read_json('ut1.json', orient = 'records', dtype={"A":str, "B":li

我制作了一个250MB的json文件,应该如下所示:

[ {"A":"uniquevalue0", "B":[1,2,3]}, 
  {"A":"uniquevalue1", "B":[1]}, 
  {"A":"uniquevalue2", "B":[1,2,3,4]} ]
其中“B”值可以是变量len>=1。说我有有效的JSON

我打电话

df = pandas.read_json('ut1.json', orient = 'records', dtype={"A":str, "B":list})
是文档。在读取熊猫数据帧时,我得到以下回溯:

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'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/…/pandas/io/json.py”,第198行,以只读json格式
日期(单位)。解析()
文件“/…/pandas/io/json.py”,第266行,解析
self._parse_no_numpy()
文件“/…/pandas/io/json.py”,第496行,在
加载(json,precise\u float=self.precise\u float),dtype=None)
ValueError:解码“true”时发现意外字符

想不出哪里出了问题。这不是很有帮助

我收到了相同的错误消息,我通过使用绝对路径解决了它

import os
basePath = os.path.dirname(os.path.abspath(__file__))
df = pandas.read_json(basePath + '/ut1.json', orient = 'records', dtype={"A":str, "B":list})

这对我有用

今天调用pandas.read_json('my_file.json')时,我得到了“Value Error:Expected object or Value”。我之前用同一个文件运行过这段代码,所以我很担心它今天不起作用。后来,由于某种原因,我发现json文件不在同一目录中。然后,我通过右键单击文件链接从git下载了该文件。这是个坏主意:(.我猜json文件没有正确编码,所以即使json文件位于同一目录中,我也会不断收到相同的错误。最后,我删除了json文件,克隆了原始git repo以获取json文件并将其再次放入同一目录。然后,pandas.read_json确实起作用。因此,首先请确保json文件存在在正确的目录中,然后确保文件没有损坏。

在尝试了@learn2day的答案后,我仍然不能从那里得到一个好的结果,但是我尝试了以下代码,所有的一切都对我有效。(PS:我正在打开一个JSON文件,其中中文字符是UTF-8字符-中文字符)


encoding=“utf8”
是该代码的关键部分。

在我的例子中,路径是错误的

确保您检查了当前的工作目录,方法是将其放在
pandas之前。阅读\u json

import os
print(os.getcwd())

发布此消息是因为上面的答案与我的问题不匹配,这是一个错误:我只是在阅读一个很长的字符串文档时发生的,我认为它是有效的json格式,但包含从python导出到字符串的
nan
,而它应该是
“null”
用于有效的json。如果文档不是使用json包创建的,则此错误消息可能指示错误值。

我也有同样的问题,然后意识到问题是在将文本从浏览器复制和粘贴到我的文件时出现的。它引入了回车符,以便将给定键的每一行拆分为mu多行。这就是问题所在。希望这对某人有所帮助!

在linux上运行代码时,我遇到了相同的错误。我意识到指定用于读取的文件名是.JSON,而不是.JSON。将其改为小写对我来说很有效。

对我来说,问题是文件开头有一个UTF-8 BOM字符。使用以下编码解决此问题d问题:

df = pd.read_json(r'C:\temp\foo.jsonl', lines=True, encoding='utf-8-sig')

该代码与给定的json文件完美配合。我尝试过这样做,但它给了我一个不同的错误:“ValueError:预期的对象或值”。我尝试过使用jsonlint.com验证json,它说它是一个有效的json文件。我不明白这有什么问题。这很好。但是尝试使用os.path.join(basePath,'/ut1.json'),而不是字符串连接。
df = pd.read_json(r'C:\temp\foo.jsonl', lines=True, encoding='utf-8-sig')