Python中如何将指定DataFrame转换为目标格式的JSON?
Python DataFrame 转指定格式JSON的实现方法
需求说明
你现有的DataFrame结构:
import pandas as pd df = pd.DataFrame({ "dis": ["RTU-1", "RTU-2"], "equip": ["m", "m"], "siteRef": ["r:153c-699a HQ", "r:153c-699a HQ"], "installed": ["d:2005-06-01", "d:999-07-12"] })
需要转换为的目标JSON格式:
{ "meta": {"ver":"2.0", "projName":"test"}, "cols":[ { "name":"dis", "dis":"Equip Name"}, {"name":"equip"}, {"name":"siteRef"}, {"name":"installed"} ], "rows":[ { "dis":"RTU-1", "equip":"m:", "siteRef":"r:153c-699a HQ", "installed":"d:2005-06-01"}, {"dis":"RTU-2", "equip":"m:", "siteRef":"r:153c-699a HQ", "installed":"d:999-07-12"} ] }
实现步骤
我们可以通过构造目标字典结构 + pandas数据转换来完成,具体代码如下:
import pandas as pd import json # 1. 创建示例DataFrame(如果已有现成的DataFrame可跳过此步) df = pd.DataFrame({ "dis": ["RTU-1", "RTU-2"], "equip": ["m", "m"], "siteRef": ["r:153c-699a HQ", "r:153c-699a HQ"], "installed": ["d:2005-06-01", "d:999-07-12"] }) # 2. 构造固定的meta部分 meta = {"ver": "2.0", "projName": "test"} # 3. 构造cols部分:可以手动定义,也适合列多的循环生成方式 cols = [{"name": col} for col in df.columns] cols[0]["dis"] = "Equip Name" # 给第一个列添加特殊的dis字段 # 4. 处理rows部分:给equip列添加后缀":" df_processed = df.copy() # 复制原数据避免修改原始内容 df_processed["equip"] = df_processed["equip"].apply(lambda x: f"{x}:") rows = df_processed.to_dict("records") # 把每行转为字典组成列表 # 5. 组合所有部分并转为JSON字符串 result_dict = { "meta": meta, "cols": cols, "rows": rows } # 生成格式化的JSON(不需要格式化可去掉indent参数) result_json = json.dumps(result_dict, indent=2) print(result_json)
代码解释
- meta部分:直接按需求构造固定字典即可;
- cols部分:用列名循环生成基础结构后,单独修改第一个元素的特殊字段,适合列较多的场景;
- rows部分:先复制原DataFrame保护原始数据,对
equip列做字符串拼接添加:,再用to_dict("records")快速转换为每行的字典列表; - 最后把三个部分组合成大字典,用
json.dumps转为JSON字符串,indent=2是为了让JSON格式更易读,不需要的话可以直接去掉。
运行这段代码就能得到你需要的目标JSON格式啦。
内容的提问来源于stack exchange,提问作者Prajakta Gujarathi
相关产品推荐
相关产品推荐

