You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:36:03