Dask将JSON嵌套到数据框

时间:2018-09-12 01:03:21

标签: 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"])

我已经在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"}
                 }]}

解决方案: 遵循@mdurant的建议,而不是使用打包袋,将JSON直接读取到数据框中,如下所示:

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

1 个答案:

答案 0 :(得分:3)

您确实可以使用bag API来完成工作,但是dask-dataframe API也有一个read_json函数,其功能类似于熊猫版本。

使用了read_json之后,您可能想使用map_partitions对所得到的字典进行逐行进一步的缩减。