Dask 嵌套 JSON 到数据框

Dask nested JSON to dataframe

我有一个巨大的嵌套 JSON 文件需要解析。我目前正在 Pandas 中进行,但想知道我是否可以在 speed/scalability 的 Dask 中实现它。

我当前的 pandas 代码是:

import pandas as pd
json_data = pd.read_json(input_file)
feature_df = json_normalize(json_obj["Features"], 
    record_path=["Cycles","Pools"],
    meta=["FeatureID"])

我在 Dask 中得到了以下代码,但我无法在互联网上找到有关如何执行此操作的更多信息:

import dask.bag as db
import json
json_data = db.read_text(input_file).map(json.loads)

这个 returns 一个 dask 包,我需要弄清楚如何正确解析。

我的JSON结构如下:

{
"FovID":1,
"Features":[
    {
        "FeatureID":"1_166_155",
        "X":166,
        "Y":155,
        "Cycles":[
            {
                "CycleID":31,
                "Pools":[
                    {
                        "PoolID":1,
                        "BC":"1224",
                        "Qual":"999",
                        "Category":"000"
                    },
                    {
                        "PoolID":2,
                        "BC":"0",
                        "Qual":"999",
                        "Category":"000"}
                 }]}

解法: 我没有使用 dask 包,而是按照@mdurant 的建议将 JSON 直接读入数据框,如下所示:

json_data = dd.read_json(self.input_s6, orient='columns').compute()

你确实可以使用包 API 来完成你的工作,但碰巧 dask-dataframe API 也有一个 read_json 函数,它的工作方式类似于 pandas 版本。

使用它 read_json 后,您可能会想使用 map_partitions 进一步减少结果字典的行。