求助:使用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库)
如果可以安装第三方库,实现逻辑更简洁:
- 先安装依赖:
pip install pandas - 代码:
import pandas as pd # orient='list'参数就是指定按列聚合为数组的格式 pd.read_csv('Names.csv').to_json('Names.json', orient='list', indent=4)
内容的提问来源于stack exchange,提问作者ironfrogclark
相关产品推荐
相关产品推荐

