2017-05-05 73 views
0

我想使用python熊猫来阅读json文件。该文件的每一行都是JSON中的完整对象。如何阅读使用Python熊猫的json文件?

我用下面版本 -

蟒蛇:2.7.6

大熊猫: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:预期的对象或值但如果我删除“\ n”之后“pqr”可用我的代码得到工作。

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

我如何才能利用python熊猫并处理这种类型的文件?

+0

以字符串形式读取整个文件,并用新行分割,然后你有4个json字符串,你可以简单地解析。 –

+0

@ErikŠťastný-好吧,但我怎么可以维持熊猫数据框中的数据后,吐出新的线? – kit

+0

使json文件的每一行都成为一个有效的json,是一种更好的方法 – pktangyue

回答

0

​​由于“pqr”之后的新行不起作用。您可以尝试修复该行或尝试将整个事件格式化为有效的JSON。我在这里做后者加入后的新行逗号和周围用方括号括整个事情,形成正确的JSON数组:

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

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

首先检查它是否是一个有效的JSON文件或不使用JSON validator网站

一旦文件是有效的JSON格式,你可以使用下面的代码,它读成数据帧

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

希望这会有所帮助。