程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何将 CSV 文件转换为分层 json [关闭]

发布于2024-11-06 19:36     阅读(440)     评论(0)     点赞(27)     收藏(3)


今天我对昨天做的另一个问题进行了修改。挑战是:如何将 CSV 转换为分层 json,键和值不同。必须使用PYTHON(pandas 和 json 库)来完成

所以我有下一个 CSV 文件:

TABLE_NAME,TIPO_CARGA,COLUMN_NAME,DATA_TYPE
CUENTAS,Full load,PERFIL,NVARCHAR2
CUENTAS,Full load,LLAMADA_INI,DATE
CUENTAS,Full load,LLAMADA_END,DATE
CUENTAS_PLAN,Delta,REGISTRO,NVARCHAR2
CUENTAS_PLAN,Delta,ULTIMA_VISITA,DATE
CUENTAS_PLAN,Delta,FECHA,DATE
CUENTAS_TACTICAS,Delta,CIUDAD,NVARCHAR2
CUENTAS_TACTICAS,Delta,SALIDA,NVARCHAR2
CUENTAS_TACTICAS,Delta,COMPLETADO,DATE
CUENTAS_MIEMBROS,Full load,NEGOCIO,NVARCHAR2
CUENTAS_MIEMBROS,Full load,CORE,NVARCHAR2
CUENTAS_MIEMBROS,Full load,DESC,NVARCHAR2

结果一定是这样的:

{
    "schema_name": {
        "CUENTAS": {
            "LOAD_TYPE": "Full load",
            "FIELDS": {
                "PERFIL": "NVARCHAR2",
                "LLAMADA_INI": "DATE",
                "LLAMADA_END": "DATE"
            }
        },
        "CUENTAS_PLAN": {
            "LOAD_TYPE": "Delta",
            "FIELDS": {
                "ULTIMA_VISITA": "DATE",
                "FECHA": "DATE",
                "CIUDAD": "NVARCHAR2"
            }
        },
        "CUENTAS_TACTICAS": {
            "LOAD_TYPE": "Delta",
            "FIELDS": {
                "CIUDAD": "NVARCHAR2",
                "SALIDA": "NVARCHAR2",
                "COMPLETADO": "DATE"
            }
        }
        {...}
    }
}

我准备了一个python代码来创建一个普通的json结构,如“key”:“value”,其中key是一个规范化的文本,value是来自CSV的信息……但这不符合要求。

有人可以帮我创建这个python代码吗?

问候


解决方案


使用groupby和字典理解:

out = json.dumps({
    'schema_name': {
        n: {'LOAD_TYPE': l, 'FIELDS': g.to_dict()}
        for (n, l), g in df.set_index('COLUMN_NAME').groupby(
            ['TABLE_NAME', 'TIPO_CARGA']
        )['DATA_TYPE']
    }
}, indent=2)

输出:

{
  "schema_name": {
    "CUENTAS": {
      "LOAD_TYPE": "Full load",
      "FIELDS": {
        "PERFIL": "NVARCHAR2",
        "LLAMADA_INI": "DATE",
        "LLAMADA_END": "DATE"
      }
    },
    "CUENTAS_MIEMBROS": {
      "LOAD_TYPE": "Full load",
      "FIELDS": {
        "NEGOCIO": "NVARCHAR2",
        "CORE": "NVARCHAR2",
        "DESC": "NVARCHAR2"
      }
    },
    "CUENTAS_PLAN": {
      "LOAD_TYPE": "Delta",
      "FIELDS": {
        "REGISTRO": "NVARCHAR2",
        "ULTIMA_VISITA": "DATE",
        "FECHA": "DATE"
      }
    },
    "CUENTAS_TACTICAS": {
      "LOAD_TYPE": "Delta",
      "FIELDS": {
        "CIUDAD": "NVARCHAR2",
        "SALIDA": "NVARCHAR2",
        "COMPLETADO": "DATE"
      }
    }
  }
}


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2043860/9df6bad7df616639256d/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)