我正在尝试通过使用python / pandas组合多个关系表来创建嵌套的JSON对象。我是Python /熊猫的初学者,所以在这里寻求帮助...
在下面的示例中,为了保持简单起见,我使用的是CSV文件而不是表格
Table1.csv
Emp_id,性别,年龄
1,M,32
2,M,35
3,F,31Table2.csv
Emp_id,月,奖励
3000年8月1日
3500年9月1日
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
}]
}]
}
答案 0 :(得分: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
}]
}]
}