多行jsons的pandas read_json返回JSONReader而不是数据帧

时间:2018-05-17 05:28:56

标签: python pandas dataframe

我有一个文件file1.json,其内容是这样的(每个字典在一个单独的行中):

{"a":1,"b":2}
{"c":3,"d":4}
{"e":9,"f":6}
.
.
.
{"u":31,"v":23}
{"w":87,"x":46}
{"y":98,"z":68}

我想将此文件加载到pandas数据框中,所以这就是我所做的:

df = pd.read_json('../Dataset/file1.json', orient='columns', lines=True, chunksize=10)

但是这不是返回一个数据帧而是返回一个JSONReader。

[IN]: df
[OUT]: <pandas.io.json.json.JsonReader at 0x7f873465bd30>

这是正常的,还是我做错了什么?如果在单个json文件中有多个字典(没有任何逗号分隔)并且每个字典在一个单独的行中时,read_json()应该如何表现,那么我怎样才能最好地将它们放入数据帧?

修改: 如果我从read_json()中删除chunksize参数,这就是我得到的:

[IN]: df = pd.read_json('../Dataset/file1.json', orient='columns', lines=True)
[OUT]: ValueError: Expected object or value

1 个答案:

答案 0 :(得分:1)

正如the docs解释的那样,这正是chunksize参数的重点:

  

chunksize:整数,默认无

     

返回JsonReader对象进行迭代。有关chunksize的详细信息,请参阅line-delimted json docs。这只能在 lines = True 时传递。如果这是None,则文件将一次性读入内存。

链接的文档说:

  

对于行分隔的json文件,pandas也可以返回迭代器,该迭代器一次读入chunksize行。这对于大文件或从流中读取非常有用。

...然后举例说明如何使用它。

如果你不想那样,为什么要通过chunksize?把它留下来吧。