我有一个文件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
答案 0 :(得分:1)
正如the docs解释的那样,这正是chunksize
参数的重点:
chunksize:整数,默认无
返回
JsonReader
对象进行迭代。有关chunksize
的详细信息,请参阅line-delimted json docs。这只能在 lines = True 时传递。如果这是None,则文件将一次性读入内存。
链接的文档说:
对于行分隔的json文件,pandas也可以返回迭代器,该迭代器一次读入
chunksize
行。这对于大文件或从流中读取非常有用。
...然后举例说明如何使用它。
如果你不想那样,为什么要通过chunksize
?把它留下来吧。