如何使用pandas将单行DataFrame导出为无索引无嵌套的JSON文件
方案1:直接通过pandas单行Series生成目标JSON
因为你的DataFrame固定只有1行,直接取第一行转为Series后调用to_json()即可,默认输出就是无外层数组、无嵌套的键值对JSON结构:
import pandas as pd # 示例df,对应你持有的单行数据 df = pd.DataFrame([{"A":"D","B":"F","C":"G"}]) # 直接生成目标格式的JSON字符串 target_json = df.iloc[0].to_json() # 写入文件 with open("output.json", "w", encoding="utf-8") as f: f.write(target_json)
如果需要控制缩进、排序等格式,可以在to_json()里加对应的参数,比如indent=2、sort_keys=True。
方案2:转字典后通过json模块处理写入
你直接写字典报错是因为文件写入只支持字符串类型,用Python内置的json模块转换即可:
import pandas as pd import json df = pd.DataFrame([{"A":"D","B":"F","C":"G"}]) # 转成普通Python字典 data_dict = df.iloc[0].to_dict() # 方法A:先转成JSON字符串再写入 with open("output.json", "w", encoding="utf-8") as f: f.write(json.dumps(data_dict, ensure_ascii=False)) # 方法B:直接用json.dump写入文件对象 with open("output.json", "w", encoding="utf-8") as f: json.dump(data_dict, f, ensure_ascii=False)
注:加
ensure_ascii=False是为了避免中文被转义为Unicode编码,没有中文可以去掉。
原orient参数无效的原因
你之前调用df.to_json()时传入的orient参数都是作用于整个DataFrame的:
orient="records"输出的是[{"A":"D","B":"F","C":"G"}],外层多了数组包裹- 其余
columns/split等参数都会引入额外的嵌套结构,不符合需求
而取单行转为Series后调用to_json()默认是针对单条数据的键值对输出,刚好匹配要求。
内容的提问来源于stack exchange,提问作者tRash
相关产品推荐
相关产品推荐

