如何使用Python Pandas读取JSON文件?

3
我想使用Python Pandas读取JSON文件。该文件的每一行都是一个完整的JSON对象。
我正在使用以下版本- python: 2.7.6 pandas:1.19.1 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文件 -
df = pd.read_json("temp.txt", lines = True)
print df

问题是,在json文件中,“childs”键包含一个未知索引的数组,并且在“\n”之间可用。因此,如果我运行以上代码,我会得到“ValueError:Expected object or value”,但是如果我移除“pqr”后面可用的“\n”,我的代码就可以工作。
我不想从我的数据中删除可用的“\n”。我希望在我的代码中处理这个问题。我想只使用Python Pandas来处理数据,而不是Python JSON库。
如何只使用Python Pandas并处理此类型的文件?

将整个文件作为字符串读取并按换行符拆分,然后您将得到4个JSON字符串,可以简单地解析它们。 - Erik Šťastný
@Erik Šťastný- 好的,但是我应该如何在按换行符拆分数据后将其保留在pandas数据框中? - ketan
将 JSON 文件的每一行都变为有效的 JSON,这是更好的方法。 - pktangyue
2个回答

8

首先使用JSON验证器检查文件是否为有效的JSON格式。

一旦文件是有效的JSON格式,您可以使用以下代码将其读取为数据框:

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

希望这能帮到您。


0

read_json()无法工作是因为在“pqr”后面有一个换行符。你可以尝试修复那一行,或者尝试将整个内容格式化成有效的JSON。我在这里使用后者,通过在换行符后添加逗号并用括号将整个内容包含起来形成一个正确的JSON数组:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接