Dask如何使用dict列表打开json
我试图使用Dask如何使用dict列表打开json,json,python-3.x,pandas,dask,Json,Python 3.x,Pandas,Dask,我试图使用read\u JSON打开一组JSON文件,以获得如下数据帧 ddf.compute() id owner pet_id 0 1 "Charlie" "pet_1" 1 2 "Charlie" "pet_2" 3 4 "Buddy" "pet_3" 但是我得到了以
read\u JSON
打开一组JSON文件,以获得如下数据帧
ddf.compute()
id owner pet_id
0 1 "Charlie" "pet_1"
1 2 "Charlie" "pet_2"
3 4 "Buddy" "pet_3"
但是我得到了以下错误
_meta = pd.DataFrame(
columns=list(["id", "owner", "pet_id"]])
).astype({
"id":int,
"owner":"object",
"pet_id": "object"
})
ddf = dd.read_json(f"mypets/*.json", meta=_meta)
ddf.compute()
*** ValueError: Metadata mismatch found in `from_delayed`.
我的JSON文件看起来像
[
{
"id": 1,
"owner": "Charlie",
"pet_id": "pet_1"
},
{
"id": 2,
"owner": "Charlie",
"pet_id": "pet_2"
}
]
据我所知,问题是我正在传递一个dict列表,因此我正在寻找正确的方法来指定它为meta=
参数
PD: 我也试着用下面的方法做
{
"id": [1, 2],
"owner": ["Charlie", "Charlie"],
"pet_id": ["pet_1", "pet_2"]
}
但达斯克对数据的解释是错误的
ddf.compute()
id owner pet_id
0 [1, 2] ["Charlie", "Charlie"] ["pet_1", "pet_2"]
1 [4] ["Buddy"] ["pet_3"]
您需要的调用如下所示:
dd.read_json("data.json", meta=meta,
blocksize=None, orient="records",
lines=False)
这在很大程度上可以从文档串中收集
- 从你的代码来看,meta看起来不错
- blocksize必须为None,因为每个文件都有一个完整的JSON对象,并且无法拆分该文件
- “记录”是指对象列表
- lines=False表示这不是一个以行分隔的JSON文件,这是Dask更常见的情况(您并不是假设换行符表示一个新记录)
那么为什么会出现错误呢?可能是Dask在某些换行符上拆分了您的文件,因此解析了部分记录,因此与给定的元不匹配。您的
\u元是什么?
?对不起,我忘了,它是一个空的数据框。我将它添加到问题描述中。谢谢你的关注!它起作用了!!谢谢!:D我不理解orient=“records”选项。我现在明白了