json - 将具有新名称的熊猫数据框的 2 个字段嵌套到 json 中
问题描述
我有这个数据框,我想从中构建一个嵌套了id
and字段的 jsonname
id name pk model
1 n1 100 mod1
2 n2 101 mod1
3 n3 102 mod1
4 n4 103 mod1
5 n5 104 mod1
6 n6 105 mod1
我想要的是:
{
"model":"mod1",
"pk":100,
"fields":{
"id":"1",
"name":"n1"
}
}
我在做什么:
authordf.groupby(["model", "pk"], as_index=False).to_json(orient="records")
以及我所拥有的:
{
"model":"mod1",
"pk":100,
"id":"1",
"name":"n1"
}
有人可以给我一个提示吗?谢谢
解决方案
将所有没有model
和的列转换pk
为字典到列fields
:
authordf['fields'] = authordf.drop(["model", "pk"], 1).apply(lambda x: x.to_dict(), 1)
print (authordf)
id name pk model fields
0 1 n1 100 mod1 {'id': 1, 'name': 'n1'}
1 2 n2 101 mod1 {'id': 2, 'name': 'n2'}
2 3 n3 102 mod1 {'id': 3, 'name': 'n3'}
3 4 n4 103 mod1 {'id': 4, 'name': 'n4'}
4 5 n5 104 mod1 {'id': 5, 'name': 'n5'}
5 6 n6 105 mod1 {'id': 6, 'name': 'n6'}
j = authordf[["model", "pk", 'fields']].to_json(orient="records")
print (j)
[{"model":"mod1","pk":100,"fields":{"id":1,"name":"n1"}},
{"model":"mod1","pk":101,"fields":{"id":2,"name":"n2"}},
{"model":"mod1","pk":102,"fields":{"id":3,"name":"n3"}},
{"model":"mod1","pk":103,"fields":{"id":4,"name":"n4"}},
{"model":"mod1","pk":104,"fields":{"id":5,"name":"n5"}},
{"model":"mod1","pk":105,"fields":{"id":6,"name":"n6"}}]
如果有多个值DataFrame.groupby
与 lambda 函数一起使用并首先转换为嵌套字典:
print (authordf)
id name pk model
0 1 n1 100 mod1
1 2 n2 100 mod1
2 3 n3 102 mod1
3 4 n4 102 mod1
4 5 n5 104 mod1
5 6 n6 105 mod1
c = authordf.columns.difference(["model", "pk"])
j = (authordf.groupby(["model", "pk"])[c].apply(lambda x: x.to_dict('records'))
.reset_index(name='fields')
.to_json(orient="records"))
print (j)
[{"model":"mod1","pk":100,"fields":[{"id":1,"name":"n1"},{"id":2,"name":"n2"}]},
{"model":"mod1","pk":102,"fields":[{"id":3,"name":"n3"},{"id":4,"name":"n4"}]}
,{"model":"mod1","pk":104,"fields":[{"id":5,"name":"n5"}]},
{"model":"mod1","pk":105,"fields":[{"id":6,"name":"n6"}]}]
推荐阅读
- python - 如何在 python 中的数据框列中使用 1930-31、1945-46 等范围?
- javascript - 尝试保存在 JSON 文件中时出现“在 '' 附近解析时 JSON 输入意外结束”错误
- objective-c - Objective C中的自动缩放webview滚动视图
- javascript - preset-env 和 core-js 似乎没有使用 browserslist
- java - 您是否需要在前端处理返回类型的方法?
- mysql - 为什么在身份验证时会在 mysql 代码上显示此错误?
- autodesk-forge - 翻译 ZIP 文件时出现问题
- mysql - 过滤等于列最小值的行
- amazon-web-services - 亚马逊主机无法安装 .Ca-bundle
- google-analytics - 在谷歌分析中启用人口统计