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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:11:39