You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何将JSON导出为含多列的CSV格式(含年份列等)

问题解决:将嵌套JSON展开为多列CSV导出

需求说明

使用df.to_csv('codetocsv.csv', index=False)导出JSON数据到CSV时,'series'列被合并为单个列。需要实现:

  • 将command、copyright等字段拆分为独立列
  • 把data中的每个年份设为单独一列
  • 兼容JSON中包含多个国家/地区的多组数据

示例JSON结构

{
  "request": {
    "command": "series"
  },
  "series": [
    {
      "f": "A",
      "copyright": "None",
      "updated": "2022",
      "data": [
        ["2021", 404.800507146],
        ["2020", 371.59497253],
        ["2019", 392.433272519],
        ["2018", 397.800544326]
      ]
    },
    {
      "f": "B",
      "copyright": "CC BY",
      "updated": "2023",
      "data": [
        ["2021", 512.3],
        ["2020", 489.1],
        ["2019", 501.7]
      ]
    }
  ]
}

修改后的代码实现

import pandas as pd
import json

# 读取JSON数据(如果是从文件读取,用以下方式;如果是已加载的JSON对象,直接使用即可)
with open('your_data.json', 'r') as f:
    json_data = json.load(f)

# 提取公共字段:request中的command,作为所有数据行的公共列
command = json_data['request']['command']

processed_rows = []
# 遍历每个series条目(对应不同国家/地区的数据集)
for series_item in json_data['series']:
    # 提取当前条目的基础属性字段
    base_info = {
        'command': command,
        'f': series_item['f'],
        'copyright': series_item['copyright'],
        'updated': series_item['updated']
    }
    # 将data数组转换为"年份:数值"的字典,直接扩展为列
    year_value_dict = dict(series_item['data'])
    # 合并基础字段和年份字段
    processed_row = {**base_info, **year_value_dict}
    processed_rows.append(processed_row)

# 转换为标准结构的DataFrame
final_df = pd.DataFrame(processed_rows)

# 导出为CSV
final_df.to_csv('codetocsv.csv', index=False)

代码说明

  1. 提取公共字段:从request中取出command,作为所有数据行的公共列
  2. 遍历多组数据:每个series下的对象对应一组独立数据(比如不同国家),逐个处理
  3. 年份列转换:把data中的二维数组转为年份作为键、数值作为值的字典,直接扩展为CSV的列
  4. 合并与导出:合并基础属性和年份数据,生成标准DataFrame后导出CSV

导出后的CSV结构示例

commandfcopyrightupdated2021202020192018
seriesANone2022404.8005371.5950392.4333397.8005
seriesBCC BY2023512.3489.1501.7NaN

内容的提问来源于stack exchange,提问作者jantheman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:05:24