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

如何修改Pandas CSV转JSON代码,使结果包含"data"包裹的数组?

问题

现有Python代码可正常运行,但无法得到预期的JSON格式结果:

parser.add_argument('-f', '--fields', help='csv fields', type=lambda s: [str(item) for item in s.split(',')])
fields = parser.parse_args().fields
print(fields)
df = pd.read_csv('data/file.csv', usecols=fields)
print(df.to_json(orient='index'))

执行命令:

python main.py --fields date,campaign,clicks

当前输出结果:

['date', 'campaign', 'clicks']
{"0":{"date":"2022-01-06","campaign":"retageting APAC","clicks":1}}

期望输出的JSON需被"data"字段包裹,格式如下:

['date', 'campaign', 'clicks']
{"data":[{"date":"2022-01-06","campaign":"retageting APAC","clicks":1}]}
修改方案

只需调整to_json的参数并构造目标字典结构,两种实现方式如下:

方式一:借助json模块实现

parser.add_argument('-f', '--fields', help='csv fields', type=lambda s: [str(item) for item in s.split(',')])
fields = parser.parse_args().fields
print(fields)
df = pd.read_csv('data/file.csv', usecols=fields)
import json
# 将DataFrame转为对象列表,再包装进data字段对应的字典
result = {"data": json.loads(df.to_json(orient='records'))}
print(json.dumps(result))

方式二:仅用pandas能力实现

parser.add_argument('-f', '--fields', help='csv fields', type=lambda s: [str(item) for item in s.split(',')])
fields = parser.parse_args().fields
print(fields)
df = pd.read_csv('data/file.csv', usecols=fields)
# 直接构造包含data键的结构并转为JSON
print(pd.Series({"data": df.to_dict('records')}).to_json(orient='index'))

核心说明

  • 使用orient='records'(或to_dict('records'))会将DataFrame转换为对象列表的格式,正好匹配期望中data字段对应的数组内容
  • 把这个列表包装进{"data": ...}的字典后再转为JSON,即可得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:29