使用pandas从REST API读取JSON后如何正确用to_csv导出表格数据
问题核心原因
你现有代码无法自动生成字段列的根源,是没有适配目标接口的嵌套返回结构。该接口返回的JSON不是直接的员工列表,而是带顶层字段的嵌套对象:顶层包含status状态标识和data明细列表两个键,真正的员工数据是嵌套在data字段下的字典列表。直接调用pd.read_json()拉取时,pandas只会把顶层的两个键识别为表格列,完全不会展开嵌套在data里的员工明细字段,自然无法自动生成你需要的列头。
正确实现方案
核心思路是先把嵌套在data字段下的员工明细列表提取出来,再交给pandas解析,即可自动识别所有员工字段生成对应列,不需要手动指定列名:
- 拉取接口的原始JSON响应,解析为Python字典结构
- 取出字典中
data键对应的员工列表,传入pandas生成DataFrame,过程中pandas会自动扫描列表内每个员工对象的键名,生成employee_name、employee_salary、employee_age、profile_image这些列头 - 以制表符为分隔符导出文本文件,关闭行索引输出,即可完全匹配你期望的格式
对应实现代码:
import pandas as pd import requests # 拉取接口原始响应 resp = requests.get("http://dummy.restapiexample.com/api/v1/employees") json_content = resp.json() # 提取嵌套的员工数据,自动识别字段列 employee_df = pd.DataFrame(json_content["data"]) # 制表符分隔导出,不保留行索引 employee_df.to_csv("try.txt", sep="\t", index=False)
无额外依赖的替代写法:如果不想安装
requests库,也可以直接用pandas读取接口后手动拆解嵌套结构,效果完全一致import pandas as pd # 读取接口返回的全量嵌套结构 full_result = pd.read_json("http://dummy.restapiexample.com/api/v1/employees") # 拆解data列的嵌套字典,重新生成平铺的员工表 employee_df = pd.DataFrame(full_result["data"].tolist()) employee_df.to_csv("try.txt", sep="\t", index=False)
导出后的文件第一行就是自动生成的标准列头,后续每行对应一条员工数据,空的profile_image字段会自动保留为空值,和你示例中的制表分隔表格格式完全一致。
内容的提问来源于stack exchange,提问作者user12691361
相关产品推荐
相关产品推荐

