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

Python下将CSV文件转换为包含子列表数组的JSON格式遇到技术难题

解决CSV转嵌套结构JSON的问题

我明白你想要把CSV转换成包含子列表数组的特定JSON格式,原来的pandas代码确实没法直接生成这种嵌套结构,我来给你优化一下代码,完美匹配你要的输出!

问题分析

你的需求是把CSV里的Sub1和Sub2字段包装到subjects子数组中,同时外层要有sources键来包裹整个记录数组。而pandas默认的orient="records"只能生成简单的对象数组,没法处理这种嵌套的结构,所以需要额外做一些列处理。

优化后的代码

import pandas as pd
import json

# 读取CSV文件
df = pd.read_csv("/home/ubuntu/Proj/sample_2.csv")

# 为每行生成subjects子数组:把Sub1和Sub2包装成数组内的对象
df['subjects'] = df.apply(lambda row: [{'Sub1': row['Sub1'], 'Sub2': row['Sub2']}], axis=1)

# 删除原来的Sub1和Sub2列,避免重复
df = df.drop(columns=['Sub1', 'Sub2'])

# 构造最终的JSON结构:外层用sources键包裹处理后的记录数组
final_result = {'sources': df.to_dict('records')}

# 写入JSON文件,带缩进格式
with open("/home/ubuntu/Proj/csvToJson_2.json", 'w') as json_file:
    json.dump(final_result, json_file, indent=4)

代码解释

  1. 读取CSV:这部分和你原来的代码一致,用pd.read_csv读取文件即可。
  2. 生成subjects列:用apply遍历每行,把Sub1和Sub2的值放到一个对象里,再用数组包裹起来,这样就得到了你需要的subjects子列表结构。
  3. 删除冗余列:把原来的Sub1和Sub2列删掉,避免最终JSON里出现重复字段。
  4. 构造最终结构:用df.to_dict('records')把DataFrame转换成对象数组,然后放到sources键对应的value中,匹配你要的外层结构。
  5. 写入文件:用json.dump来写入文件,indent=4可以让JSON格式更美观,和你期望的输出格式一致。

运行这段代码后,你就能得到完全符合要求的JSON输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:17:31