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

如何将CSV转换为嵌套JSON?实现预期格式及简化方案

实现CSV转嵌套JSON的简便方法

先明确场景:假设你的CSV数据示例如下:

order_date,customer_id,amount
2023-10-01,C001,100
2023-10-01,C002,200
2023-10-02,C003,150

预期的嵌套JSON格式是按order_date作为外层键,内层包含当天所有客户订单数据:

[
  {
    "order_date": "2023-10-01",
    "customers": [
      {"customer_id": "C001", "amount": 100},
      {"customer_id": "C002", "amount": 200}
    ]
  },
  {
    "order_date": "2023-10-02",
    "customers": [
      {"customer_id": "C003", "amount": 150}
    ]
  }
]

最简实现代码

用pandas的groupby+apply就能搞定,不用写复杂循环:

import pandas as pd

# 1. 读取CSV文件
df = pd.read_csv('你的订单文件.csv')

# 2. 按order_date分组,构造嵌套结构
nested_data = df.groupby('order_date').apply(
    lambda group: group.drop('order_date', axis=1).to_dict('records')
).reset_index(name='customers')

# 3. 转成带缩进的JSON
nested_json = nested_data.to_json(orient='records', indent=2)

# 打印或保存结果
print(nested_json)
# 保存到文件的话:
# with open('嵌套订单.json', 'w', encoding='utf-8') as f:
#     f.write(nested_json)

代码解释

  • groupby('order_date'):把同一天的订单归为一组
  • apply(...):对每组数据,先删掉order_date列(因为要把它作为外层键),再转成字典列表(对应内层的客户订单)
  • reset_index(name='customers'):把分组的order_date变回普通列,同时给内层订单列表命名为customers
  • to_json(orient='records', indent=2):生成数组格式的JSON,indent=2是为了排版美观,方便查看

扩展说明

如果CSV还有其他需要放在外层的字段(比如order_month),只需调整groupby的键,比如groupby(['order_month', 'order_date']),内层处理时对应去掉这些字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:12