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

如何将动态表格中h列与多组t、c列数据匹配并转为JSON

实现H-T-C层级关联并生成目标JSON

你当前的代码已完成T与C的匹配,但缺少H与对应T组的关联逻辑。核心解决思路是先填充H列的空值,让每一行明确归属的H,再按H分组整理对应的T和C集合。

关键步骤说明

  • 填充H列空值:原表格中H列的空行属于上一个非空的H,用ffill()方法可快速填充,确保每一行都有对应的H归属。
  • 建立Flag与T的映射:每个非空的T行对应唯一flag,先存储该映射关系,避免重复提取T值。
  • 按H和Flag分组整理:通过分组操作,将同一H下的所有T及其对应的C列表整合为层级结构。

修改后的完整代码

import pandas as pd
import json

# 读取Excel数据
df = pd.read_excel("sheet.xlsx")

# 向前填充H列空值,让每一行都明确归属的H
df['h'] = df['h'].ffill()

# 建立flag到对应T值的映射(每个flag对应唯一T)
flag_to_t = df.dropna(subset=['t']).set_index('flag')['t'].to_dict()

# 构建H-T-C层级字典
result = {}
for (h_val, flag), group in df.groupby(['h', 'flag']):
    t_val = flag_to_t[flag]
    # 提取当前组的C值并转为列表
    c_list = group['c'].dropna().tolist()
    # 组装层级结构
    if h_val not in result:
        result[h_val] = {}
    result[h_val][t_val] = c_list

# 生成格式化JSON并保存
with open("new_json.json", "w", encoding='utf-8') as file:
    json.dump(result, file, indent=4, ensure_ascii=False)

示例输出JSON结构

运行代码后,针对你提供的示例表格,生成的JSON结构如下:

{
    "h1": {
        "t001 random text (from h1 just show where match)": [
            "c001-random text",
            "c002 random text"
        ],
        "t002 random text": [
            "c001-random text",
            "c002-random text",
            "c003-random text"
        ],
        "t003 random text": [
            "c001-random text"
        ]
    },
    "h2": {
        "t001 random text": [
            "c001-random text",
            "c002 random text"
        ],
        "t002 random text": [
            "c001-random text",
            "c002-random text"
        ]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:25:08