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

求助:使用Python将CSV转换为列聚合数组格式JSON的实现方法

核心修改逻辑

原代码的逻辑是按行存储,用appname作为主键存储整行数据,要实现按列聚合,需要先为每列初始化空数组,遍历行时将对应字段的值追加到所属列的数组中。

修改后完整代码(标准库实现,无需额外安装依赖)

import csv
import json

# 函数入参保持不变
def make_json(csvFilePath, jsonFilePath):
    data = {}
    with open(csvFilePath, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)
        # 读取所有列名,为每列初始化空数组
        for col_name in csvReader.fieldnames:
            data[col_name] = []
        # 遍历每一行,将字段值追加到对应列的数组
        for row in csvReader:
            for col_name in csvReader.fieldnames:
                # 如果需要将id转为数字类型,可放开下方注释的判断逻辑
                # if col_name == 'id':
                #     data[col_name].append(int(row[col_name]))
                # else:
                data[col_name].append(row[col_name])
    
    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        jsonf.write(json.dumps(data, indent=4))

# 路径配置保持和你原有逻辑一致即可
csvFilePath = r'Names.csv'
jsonFilePath = r'Names.json'
make_json(csvFilePath, jsonFilePath)

可选简化方案(依赖pandas库)

如果可以安装第三方库,实现逻辑更简洁:

  1. 先安装依赖:pip install pandas
  2. 代码:
import pandas as pd
# orient='list'参数就是指定按列聚合为数组的格式
pd.read_csv('Names.csv').to_json('Names.json', orient='list', indent=4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:06:02