如何使用python pandas读取json文件?

时间:2017-05-05 10:56:16

标签: python json pandas

我想使用python pandas读取json文件。该文件的每一行都是JSON中的完整对象。

我正在使用版本 -

python:2.7.6

pandas:1.19.1

json文件 -

purchaseToken

我正在使用下面的代码来读取json文件 -

{"id":"111","p_id":"55","name":"aaa","notes":"","childs":[]}
{"id":"222","p_id":"56","name":"bbb","notes":"","childs":[]}
{"id":"333","p_id":"75","name":"ccc","notes":"","childs":[]}
{"id":"444","p_id":"76","name":"ddd","notes":"","childs":["abc","efg","pqr"
,"rtu"]}

问题是,在json文件中,“childs”键包含一个未知索引的数组,并且在“\ n”之间可用。因此,如果我运行上面的代码,我得到 ValueError:预期的对象或值,但如果我在“pqr”之后删除“\ n”,我的代码就可以运行了。

我不想从我的数据中删除可用的“\ n”。我想在我的代码中处理这个问题。我想只使用python pandas代替python json库来以良好的方式处理数据。

我如何才能使用python pandas并处理这种类型的文件?

2 个答案:

答案 0 :(得分:6)

首先使用JSON validator网站检查它是否是有效的json文件

一旦文件处于有效的json格式,您就可以使用以下代码将其读作数据帧

with open("training.json") as datafile:
    data = json.load(datafile)
dataframe = pd.DataFrame(data)

希望这会有所帮助。

答案 1 :(得分:0)

由于" pqr"之后的新行,

read_json()无法正常工作。您可以尝试修复该行,也可以尝试将整个内容格式化为有效的JSON。我在这里做了后者,在新行后添加逗号并用括号括起整个东西以形成一个合适的JSON数组:

with open('temp.txt') as f:
    content = f.read()

pd.read_json('[' + content.replace('}\n', '},') + ']')