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

如何将DataFrame转换为值为列表嵌套列表格式的JSON?

将DataFrame转换为指定格式的JSON

需求说明

现有包含Name、ts、value列的DataFrame,需要转换为以下结构的JSON对象:

[
    {
        "name": "ABC",
        "data": [
            [1506709800000, null],
            [1514658600000, 756.98],
            [1522434600000, null],
            [1530297000000, null]
        ]
    },
    {
        "name": "EFG",
        "data": [
            [1506779800000, 789],
            [152368600000, 412.98],
            [16245834600000, 512],
            [19874567000000, null]
        ]
    }
]

问题分析

你之前尝试的代码生成了带列名的字典列表,不符合需求:

(df.groupby('Name')[['ts','value']]
       .apply(lambda x: x.to_dict('records'))
       .to_json(orient="index"))

问题出在to_dict('records')会把每行数据转为{'ts': 值, 'value': 值}的字典结构,而我们需要的是无列名的嵌套列表。

解决方案

方法一:循环分组处理

import pandas as pd
import json

# 假设你的DataFrame为df
result = []
for name, group in df.groupby('Name'):
    # 将每组的ts和value转为嵌套列表
    data_list = group[['ts', 'value']].values.tolist()
    result.append({
        "name": name,
        "data": data_list
    })

# 生成格式化的JSON字符串
json_output = json.dumps(result, indent=4)
print(json_output)

方法二:链式写法简化代码

import pandas as pd
import json

result = (df.groupby('Name')
          .apply(lambda x: {
              "name": x.name,
              "data": x[['ts', 'value']].values.tolist()
          })
          .tolist())

# 生成格式化的JSON字符串
json_output = json.dumps(result, indent=4)
print(json_output)

代码说明

  • groupby('Name')按名称分组,每个分组的x.name即为当前分组的名称值
  • x[['ts', 'value']].values.tolist()直接提取两列的数值,将每行转为[ts值, value值]的列表,最终组成嵌套列表,完美匹配目标格式的data字段
  • tolist()将分组后的结果转为列表,再通过json.dumps生成带缩进的格式化JSON字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:45:56