使用Python Pandas保存JSON文件时如何正确格式化以保留原有结构
问题原因
将包含Key1字段的顶层字典直接传入pd.DataFrame()时,pandas会把Key1识别为DataFrame的列名,列表中的元素对应行数据,默认从0开始生成行索引。调用to_json()方法时,行索引会被序列化为字典的key,因此原本的列表结构会变为带数字索引的对象结构,外层方括号也变为花括号。
实现方法
不要直接将顶层字典转为DataFrame,仅提取Key1对应的列表做数据处理,处理完成后重新组装为原始的字典结构再导出即可,完整代码如下:
import pandas as pd import json # 读取原始JSON文件 with open("源文件路径.json", "r", encoding="utf-8") as f: raw_data = json.load(f) # 仅提取Key1对应的列表生成DataFrame df = pd.DataFrame(raw_data["Key1"]) # ------------------- # 此处添加你的数据处理逻辑 # ------------------- # 处理完成后将DataFrame转为无索引的字典列表,组装回原始结构 processed_data = { "Key1": df.to_dict(orient="records") } # 导出为JSON,indent参数可保持格式化缩进和原文件一致 with open("输出文件路径.json", "w", encoding="utf-8") as f: json.dump(processed_data, f, indent=2, ensure_ascii=False)
关键参数说明
orient="records":指定DataFrame导出格式为无行索引的字典列表,完全匹配原始Key1对应的数组结构indent:设置JSON缩进空格数,输出格式化的内容,和原始文件视觉格式一致ensure_ascii=False:避免中文被转为Unicode编码,保留原始字符
内容的提问来源于stack exchange,提问作者Nikky Leed
相关产品推荐
相关产品推荐

