Python3使用Pandas将JSON转CSV时设置JSON键为表头
Pandas 将产品JSON数据转换为键名作为表头的标准CSV方案
- 只要你的JSON数据是「单条记录为字典、多条记录组成列表」的标准结构,不需要手动逐行拼接,直接用Pandas原生方法即可实现目标效果:JSON键自动映射为CSV表头,每行对应一条产品记录,生成规整二维表。
- 可直接运行的参考代码:
import pandas as pd # 如果是直接调用dummy API拉取数据,额外导入requests库即可 # import requests # 替换为你自己的数据源:接口请求拿到的JSON解析结果/本地存储的JSON数据都可以 # 示例数据结构和你给出的样例完全匹配 product_list = [ {"id": 1, "title": "iPhone 9", "description": "苹果全面屏机型发布前的最后一代非全面屏手机"}, {"id": 2, "title": "iPhone X", "description": "苹果首款全面屏手机,搭载A11仿生芯片"} ] # 接口取数示例: # resp = requests.get("你的dummy API请求地址") # product_list = resp.json() # 自动将字典键转为DataFrame列名,也就是后续CSV的表头 df = pd.DataFrame(product_list) # 导出CSV,index=False用于取消Pandas默认生成的行索引列,避免多出无意义的第一列 df.to_csv("产品列表.csv", index=False, encoding="utf-8-sig")
- 导出的CSV效果完全符合预期:
id,title,description 1,iPhone 9,苹果全面屏机型发布前的最后一代非全面屏手机 2,iPhone X,苹果首款全面屏手机,搭载A11仿生芯片
- 常见问题处理:
- 如果dummy API返回的JSON有外层嵌套(比如返回结构是
{"code": 200, "data": [产品记录列表]}),取数时要定位到记录列表的层级,比如product_list = resp.json()["data"]再传入生成DataFrame即可。 - 加
encoding="utf-8-sig"参数是为了避免Windows系统下用Excel打开CSV出现中文乱码,如果仅用代码读取文件,可替换为utf-8编码。 - 如果需要修改表头显示名称,不需要改动原始JSON,生成DataFrame后重命名字段即可,示例:
df = df.rename(columns={"id": "产品ID", "title": "产品名称", "description": "产品介绍"})。 - 单条记录存在字段缺失(比如某条数据没有description字段)时,Pandas会自动在对应单元格填空值,不会破坏表格结构。
- 如果dummy API返回的JSON有外层嵌套(比如返回结构是
内容的提问来源于stack exchange,提问作者Idriss
相关产品推荐
相关产品推荐

