如何将Pandas DataFrame转换为指定嵌套层级的JSON格式
Pandas生成自定义嵌套结构JSON的实现方法
实现代码
Pandas 原生的to_json()方法仅支持固定格式的JSON导出,无法直接实现多层级自定义键、列组合拼接的需求,你可以先手动构造目标字典结构,再转JSON即可:
import pandas as pd import json # 你的原始DataFrame df = pd.DataFrame([ ["Alice", "Lee", "Athens", "Alabama", "PXY"], ["Nor", "Xi", "Mesa", "Arizona", "ABC"] ], columns=["fname", "lname", "city", "state", "code"]) # 构造目标嵌套结构 output = {"Employees": {}} for _, row in df.iterrows(): # 拼接全名作为二级键 full_name = f"{row['fname']} {row['lname']}" # 填充二级节点内容 output["Employees"][full_name] = { "code": row["code"], "Address": f"{row['city']} {row['state']}" } # 导出为JSON字符串,indent控制缩进,ensure_ascii=False避免中文乱码 json_result = json.dumps(output, indent=2, ensure_ascii=False)
导出的JSON结构如下:
{ "Employees": { "Alice Lee": { "code": "PXY", "Address": "Athens Alabama" }, "Nor Xi": { "code": "ABC", "Address": "Mesa Arizona" } } }
大数据量优化方案
如果你的DataFrame行数超过10万,逐行遍历的iterrows()性能较低,可以用Pandas内置方法批量处理后生成字典,运行效率提升10倍以上:
# 批量生成拼接字段 df["full_name"] = df["fname"] + " " + df["lname"] df["Address"] = df["city"] + " " + df["state"] # 直接生成嵌套字典结构 output = {"Employees": df.set_index("full_name")[["code", "Address"]].to_dict("index")}
内容的提问来源于stack exchange,提问作者learner57
相关产品推荐
相关产品推荐

