我正在尝试将一个巨大的JSON文件转换为一个数据帧,以便对其进行预处理分析。但是无法转换。你知道吗
问题出在pd.read\u json文件你知道吗
import json
import pandas as pd
with open("/content/drive/My Drive/timeline_1.jsonl") as f:
data = f.readlines()
data_json_str = "[" + ','.join(data) + "]"
data_df = pd.read_json(data_json_str)
ValueError:解码“string”时出现不匹配的“”“”
使用pandas.io.json.json_normalize:
数据:
test.json
的文件中以list
的dicts
形式给出数据读取数据的代码:
方案2:
数据
读取此数据的代码
data
将是str
的列表,其中文件的每一行都是列表中的str
ast.literal_eval
将str
转换回dictstr
中存在无效值,{ValueError: malformed node or string: <_ast.Name object at 0x000002B7240B7888>
,这不是一个特别有用的错误try-except
块来打印引起问题的任何行,添加到values_to_fix
dict
直到您得到所有行。你知道吗您的数据可能已损坏,至少在一个地方(可能更多)。你知道吗
找到这样一个位置的一种方法是运行代码,而不是在整个文件上, 但是在它的大块上。你知道吗
例如,在以下对象上运行代码:
如果任何部件运行正常,则没有错误。你知道吗
下一步是对每个“失败”块重复上述过程。你知道吗
另一种方法:仔细查看StackTrace,可能在某个地方 源文件中的行号(不要与行号混淆) Python代码)。你知道吗
现在,您将整个文本组合成一行,因此即使StackTrace 包含这样的数字,很可能只有1。你知道吗
为了简化您的调查,请以这样一种方式更改您的代码 源行位于连接文本的单独的行中。比如:
然后再次执行代码并读取显示的数字(错误发生的位置), 现在等于源行数。你知道吗
然后看这一行,纠正它,你的代码应该运行没有错误。你知道吗
使用源数据在注释后编辑
在你的数据中我注意到:
我做了以下补充和修改:
所以输入字符串是:
然后执行指令读取此字符串:
得到了一个有2行的数据帧(没有错误)。 起初我怀疑
'
可能是错误的来源,但是读取json 我也处理过这个案子。你知道吗但是当我删除第一个{…}后面的逗号时,我得到了一个错误:
(你的错误除外)。你知道吗
我使用Python3.7.0和Pandas0.25。 如果您有Python或Pandas的旧版本,也许您应该 升级它们?你知道吗
真正的问题可能与JSON中的一些“弱点”有关 解析器(我不确定它是Python的一部分还是Pandas的一部分)。你知道吗
在升级之前,执行另一个测试:从 输入字符串并尝试再次读取json。你知道吗
如果你这次得到一个适当的结果,这将证实我的怀疑 您安装的JSON解析器有缺陷,将成为 重要的支持我的建议升级你的软件。你知道吗
相关问题 更多 >
编程相关推荐