Python Dask将JSON嵌套到数据帧

Python Dask将JSON嵌套到数据帧,python,json,pandas,dask,Python,Json,Pandas,Dask,我需要解析一个巨大的嵌套JSON文件。我目前正在Pandas中实现它,但是我想知道我是否可以在Dask中实现它以提高速度/可伸缩性 我目前的代码是: import pandas as pd json_data = pd.read_json(input_file) feature_df = json_normalize(json_obj["Features"], record_path=["Cycles","Pools"], meta=["FeatureID"]) 我已经在Da

我需要解析一个巨大的嵌套JSON文件。我目前正在Pandas中实现它,但是我想知道我是否可以在Dask中实现它以提高速度/可伸缩性

我目前的代码是:

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)
这将返回一个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"}
                 }]}
json_data = dd.read_json(self.input_s6, orient='columns').compute()
解决方案: 我没有使用dask包,而是按照@mdurant的建议将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"}
                 }]}
json_data = dd.read_json(self.input_s6, orient='columns').compute()

您确实可以使用bagapi来完成工作,但daskdataframeapi也有一个与pandas版本类似的功能


在使用了它之后,您可能希望使用它对结果字典进行逐行的进一步缩减。

很高兴知道!您能提供一个我将用于示例JSON的语法示例吗?事实上,执行以下操作(不包括解析列)比用uJSON加载JSON然后用JSON_normalize()解析要慢。我做错什么了吗
json\u data=dd.read\u json(self.input\u s6,orient='columns').compute()
dask只调用函数,因此如果您的数据小到可以放入内存,并且程序占用CPU的时间最多,那么当您所做的只是在主线程中实现整个过程,而不是进行任何处理时,您可能只会增加开销。