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
相关产品推荐
相关产品推荐

