python - 将格式 json 转换为 csv
问题描述
我有 json
{
"licenses": [
{
"name": "",
"id": 0,
}
],
"info": {
"contributor": "",
"version": "",
"year": ""
}
我有一个脚本,它读取 json 并使用licenses
参数保存新的 csv。如何添加额外的参数,例如info
?在熊猫的帮助下
import json
import pandas as pd
data = json.load(open('file.json'))
df = pd.DataFrame(data["licenses"])
df.to_csv('test.csv', index=False)
解决方案
假设您extra_info
将许可证 ID 映射到一些额外信息。下面是将基础数据与许可证和额外信息合并的代码,从而导致最终许可证数据具有额外的info
字段。这两个列表是基于共同id
字段连接的。在我的代码中,我跳过了从 JSON 文件中读取的内容,我认为这是显而易见且微不足道的。
data
你必须在和之间有一些对应关系extra_info
。我认为这两个数据都有独特的共同id
领域。因为如果没有共同点,您将如何判断哪些信息对应于数据中的哪些许可证?至少它们必须通过在列表中具有相同的位置来相互对应。
data = {
"licenses": [
{
"name": "name0",
"id": 0,
},
{
"name": "name1",
"id": 1,
},
],
"info": {
"contributor": "",
"version": "",
"year": ""
}
}
# Extra info fields indexed by id.
extra_info = [
{
'id': 0,
'info': 'info0',
},
{
'id': 1,
'info': 'info1',
},
]
import json, pandas as pd
info_map = {e['id'] : e for e in extra_info}
licenses = [{**e, 'info': info_map[e['id']]['info']} for e in data['licenses']]
df = pd.DataFrame(licenses)
df.to_csv('0491.csv', index = False)
输出:
name,id,info
name0,0,info0
name1,1,info1
推荐阅读
- python - 在 post 方法中传递标头以访问令牌
- r - R粘贴带有标题的html字符串
- wso2 - 我们如何在 WSO2 EI 控制台中禁用默认登录?
- javascript - 当有多个使用 Vanilla JS 的 Ajax 请求时,如何识别特定的 Ajax 请求?
- c# - ElasticSearch NEST OR 查询
- c# - 使用递归和反射的 JSON 序列化。(数组问题)
- elasticsearch - 我可以在不指定路由键的情况下批量删除文档吗?
- javascript - Angular - 如何优化我的代码以缩短加载时间?当前加载时间为 2.45 秒
- spring-boot - Spring Boot 应用程序作为另一个 gradle 项目中的依赖项
- javascript - 通过 websocket 渲染 DASH 组件