gpt4 book ai didi

python - 将嵌套的 JSON 读入 Dask DataFrame

转载 作者:行者123 更新时间:2023-12-01 23:01:15 24 4
gpt4 key购买 nike

我正在尝试将嵌套的 JSON 读入 Dask DataFrame,最好使用能够完成繁重工作的代码。

这是我正在读取的 JSON 文件:

{
"data": [{
"name": "george",
"age": 16,
"exams": [{
"subject": "geometry",
"score": 56
},
{
"subject": "poetry",
"score": 88
}
]

}, {
"name": "nora",
"age": 7,
"exams": [{
"subject": "geometry",
"score": 87
},
{
"subject": "poetry",
"score": 94
}
]
}]
}

这是我想要的结果 DataFrame。

<表类="s-表"><头>名字年龄考试主题考试成绩<正文>乔治16几何56乔治16诗歌88诺拉7几何87诺拉7诗歌94

以下是我如何使用 pandas 完成此操作:

df = pd.read_json("students3.json", orient="split")
exploded = df.explode("exams")
pd.concat([exploded[["name", "age"]].reset_index(drop=True), pd.json_normalize(exploded["exams"])], axis=1)

达斯克没有json_normalize ,那么完成这项任务的最佳方法是什么?

最佳答案

如果文件包含 json 行,那么最可扩展的方法是使用 dask.bag然后将 pandas 片段映射到每个包分区。

如果文件是一个大的 json,那么开始/结束括号会导致问题,因此在将文本映射到 json 之前需要一个额外的函数来删除它们。

粗略的伪代码:

import dask.bag as db

bag = db.read_text("students3.json")

# if there are json-lines
option1 = bag.map(json.loads).map(pandas_fn)

# if there is a single json
option2 = bag.map(convert_to_jsonlines).map(json.loads).map(pandas_fn)

关于python - 将嵌套的 JSON 读入 Dask DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71847618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com