将格式json转换为csv

2024-05-15 07:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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)

Tags: csvnameimportinfo脚本idjsondf
1条回答
网友
1楼 · 发布于 2024-05-15 07:37:57

假设您有extra_info将许可证ID映射到一些额外信息。下面的代码将基本数据与许可证和额外信息合并,最终的许可证数据具有额外的info字段。这两个列表基于comonid字段连接。在我的代码中,我跳过了对JSON文件的读取,我认为这是显而易见的和琐碎的

你必须在dataextra_info之间有一些对应关系。我假设这两个数据都有唯一的公共id字段。因为如果没有共同点,您将如何判断哪些信息对应于数据中的哪个许可证?至少它们必须通过在列表中的相同位置相互对应

Try it online!

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

相关问题 更多 >