如何将Python dataframe转换为指定嵌套结构的JSON?
实现方案
直接使用pandas即可完成全部转换,无需复杂自定义逻辑,操作步骤如下:
- 处理格式适配字段
- 原
date列为DD/MM/YYYY格式字符串,借助pandas内置的日期解析能力,直接转换为目标要求的YYYY-MM-DD 09:00:00格式(固定给所有日期加上9点的时间) - 将原列名
ID重命名为目标JSON要求的Id,匹配大小写规则
- 原
- 逐行生成嵌套结构
遍历dataframe每一行,组装为目标要求的字典:外层保留Id、date、value_2、value_3字段,单独生成ABC数组,数组内固定填入当前行的value_1值,以及写死的"type": "int"字段 - 整合为最终结构
将所有组装完成的行对象,存入顶层XYZ键对应的列表中,即可得到要求的JSON格式
可直接运行的代码
import pandas as pd import json # 载入你自己的原始dataframe # 这里模拟你给出的样例数据结构 df = pd.DataFrame({ "date": ["03/03/2018", "03/03/2018", "02/03/2018"], "ID": [12345, 89547, 12345], "value_1": [111, 222, 333], "value_2": [1, 2, 5], "value_3": [30, 50, 80] }) # 转换date为目标格式 df["date"] = pd.to_datetime(df["date"], format="%d/%m/%Y").dt.strftime("%Y-%m-%d 09:00:00") # 重命名字段匹配目标结构 df = df.rename(columns={"ID": "Id"}) # 逐行组装嵌套结构 xyz_content = [] for _, row in df.iterrows(): xyz_content.append({ "Id": row["Id"], "date": row["date"], "value_3": row["value_3"], "value_2": row["value_2"], "ABC": [{"value_1": row["value_1"], "type": "int"}] }) # 生成最终JSON final_result = {"XYZ": xyz_content} # 如需导出为JSON文件,可执行: # with open("output.json", "w", encoding="utf-8") as f: # json.dump(final_result, f, ensure_ascii=False, indent=4)
注:你提供的目标JSON样例中写的
"Id": 123456为笔误,代码会自动匹配原始dataframe中的真实ID值,和数据逻辑保持一致。
内容的提问来源于stack exchange,提问作者wawawa
相关产品推荐
相关产品推荐

