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”选项。我现在明白了