如何将层级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
相关产品推荐
相关产品推荐

