使用 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 表
将多个嵌套的 Promise 和 Promise 数组转换为 Observables
使用 Python 将 4 级嵌套 JSON 文件转换为 1 级嵌套