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

如何将层级DataFrame转换为指定嵌套JSON以实现表单联动下拉

将DataFrame转换为层级嵌套JSON(适用于联动下拉)

df.to_json()的各类orient参数确实无法直接生成这种多层级嵌套结构,需要通过分组手动构建目标格式,以下是可行的实现方案:

代码实现

import pandas as pd
import json

# 读取你的数据(替换为实际数据来源)
# df = pd.read_csv('your_location_data.csv')

# 初始化顶层结构
output = {"regions": []}

# 第一层:按Region分组
for region_name, region_group in df.groupby("Region"):
    region_item = {"name": region_name, "provinces": []}
    
    # 第二层:每个Region下按Province分组
    for province_name, province_group in region_group.groupby("Province"):
        province_item = {"name": province_name, "municipalities": []}
        
        # 第三层:每个Province下按Municipality分组
        for mun_name, mun_group in province_group.groupby("Municipality"):
            # 收集当前Municipality下的所有Barangay
            barangay_list = mun_group["Barangay"].tolist()
            mun_item = {"name": mun_name, "barangays": barangay_list}
            province_item["municipalities"].append(mun_item)
        
        region_item["provinces"].append(province_item)
    
    output["regions"].append(region_item)

# 转换为格式化的JSON字符串
final_json = json.dumps(output, indent=2, ensure_ascii=False)
print(final_json)

关键说明

  • 三次嵌套groupby严格对应Region→Province→Municipality的层级关系,确保结构准确
  • 每个层级的对象包含name字段(对应分组名称)和下一级列表,完全匹配联动下拉的数据需求
  • ensure_ascii=False保证非ASCII字符(如菲律宾本地地名)能正常显示,indent=2让JSON格式更易读
  • 如果DataFrame中存在重复的层级名称,groupby会自动合并,避免结构冗余

内容的提问来源于stack exchange,提问作者Lazy-Panda-Bear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:00:31