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

Python Pandas 如何将DataFrame转换为按interval分组的嵌套JSON格式

Pandas 转指定格式JSON实现方案

你可以直接通过pandas自带的双层分组+字典转换实现需求,代码非常简洁,不需要额外依赖:


完整实现代码

首先先修正你原始数据列名中date.的多余小数点,再做双层分组:

import pandas as pd
import json

# 假设你已经将样例数据读入为DataFrame变量df
# 第一步:修正列名
df = df.rename(columns={"date.": "date"})

# 第二步:双层分组构造目标结构
result = {}
# 第一层按interval分组
for interval, interval_group in df.groupby("interval"):
    pid_map = {}
    # 第二层按pid分组,构造pidN对应的列表
    for pid, pid_group in interval_group.groupby("pid"):
        # 仅保留需要的3个字段,转为字典列表
        pid_map[f"pid{pid}"] = pid_group[["date", "pid", "value"]].to_dict("records")
    result[interval] = pid_map

# 可选:转换为格式化的JSON字符串/输出到文件
json_output = json.dumps(result, indent=4, ensure_ascii=False)
print(json_output)

更简洁的字典推导式写法

如果偏好更短的代码,可以直接用嵌套字典推导式一步生成结果:

result = {
    interval: {
        f"pid{pid}": group[["date", "pid", "value"]].to_dict("records")
        for pid, group in interval_group.groupby("pid")
    }
    for interval, interval_group in df.groupby("interval")
}

说明

  • 代码完全贴合你要求的JSON结构,生成结果和你给出的示例逻辑一致(你给出的示例JSON里2021-09-05 00:05:00分组下pid2的第二个元素不小心把pid写成了1,属于示例笔误,代码运行不会出现该问题)
  • 用pandas原生方法实现,处理大数据量时效率远高于自行逐行遍历构造字典

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:12:03