使用 Python 将多个关系表转换为嵌套 JSON 格式

Posted

技术标签:

【中文标题】使用 Python 将多个关系表转换为嵌套 JSON 格式【英文标题】:Multiple relational tables to nested JSON format using Python 【发布时间】:2019-04-30 10:27:55 【问题描述】:

我正在尝试通过使用 python/pandas 组合多个关系表来创建嵌套的 JSON 对象。我是 Python/pandas 的初学者,所以在这里寻求帮助......

在以下示例中,我使用 CSV 文件而不是表格,只是为了保持简单

Table1.csv

Emp_id、性别、年龄 1、M、32 2、M、35 3、F、31

Table2.csv

Emp_id、月份、激励 3000 年 8 月 1 日 1,九月,3500 2000 年 10 月 1 日 1500 年 8 月 2 日 5000 年 8 月 3 日 2400 年 9 月 3 日

我想创建一个如下所示的 JSON 对象

*需要的输出:


    "data": [
        "employee": 1,
        "gender": M,
        "age": 32,
        "incentive": [
            "aug": 3000,
            "sep": 3500,
            "oct": 2000
        ],
        "employee": 2,
        "gender": M,
        "age": 35,
        "incentive": [
            "aug": 1500
        ],
        "employee": 3,
        "gender": F,
        "age": 31,
        "incentive": [
            "aug": 5000,
            "sep": 2400
        ]
    ]

【问题讨论】:

【参考方案1】:

首先使用merge 与左连接,然后使用groupby 与字典的lambda 函数并转换to_dict,最后添加顶部key 值并转换为json

d = (df1.merge(df2, on='Emp_id', how='left')
         .groupby(['Emp_id','Gender','Age'])['Month','Incentive']
         .apply(lambda x: [dict(x.values)])
         .reset_index(name='Incentive')
         .to_dict(orient='records')

)
#print (d)

import json
json = json.dumps('data':d)

print (json)


    "data": [
        "Emp_id": 1,
        "Gender": "M",
        "Age": 32,
        "Incentive": [
            "Aug": 3000,
            "Sep": 3500,
            "Oct": 2000
        ]
    , 
        "Emp_id": 2,
        "Gender": "M",
        "Age": 35,
        "Incentive": [
            "Aug": 1500
        ]
    , 
        "Emp_id": 3,
        "Gender": "F",
        "Age": 31,
        "Incentive": [
            "Aug": 5000,
            "Sep": 2400
        ]
    ]

【讨论】:

以上是关于使用 Python 将多个关系表转换为嵌套 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache Beam (Python) 将多个嵌套的 JSON 写入 BigQuery 表

如何在python中将展平表转换为嵌套(分层)json?

将多个嵌套的 Promise 和 Promise 数组转换为 Observables

使用 Python 将 4 级嵌套 JSON 文件转换为 1 级嵌套

如何使用 xlsx npm 库将嵌套的 json 对象转换为 excel 表?

在 Python 中将 JSON 转换为 HTML 表