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

如何在Python中移除pandas转JSON后的方括号与逗号?

解决Pandas DataFrame转单行JSON对象(无外层数组)的问题

你想要的格式其实是JSON Lines(每行一个独立JSON对象),而df.to_json(orient='records')默认生成的是包裹在数组里的JSON结构。这里有两种实用的实现方式:

方法一:逐行生成JSON(推荐)

这种方式直接遍历DataFrame的每一行,将每行数据转为JSON字符串后逐行写入文件,从根源上避免数组格式的问题,也更适配复杂数据场景:

import pandas as pd
import json

# 先构造你的目标DataFrame
data = {
    "Name": ["Dinesh", "Karthik", "Amit", "Mishra"],
    "Age": [23, 34, None, 10]
}
df = pd.DataFrame(data)

# 写入JSON Lines格式文件
with open('abcd', 'w') as f:
    for _, row in df.iterrows():
        # 将行数据转为字典再转JSON字符串,ensure_ascii=False保证特殊字符正常显示
        json_str = json.dumps(row.to_dict(), ensure_ascii=False)
        f.write(json_str + '\n')

执行后,abcd文件的内容就是你期望的样子:

{ "Name": "Dinesh", "Age": 23 }
{ "Name": "Karthik", "Age": 34 }
{ "Name": "Amit", "Age": null }
{ "Name": "Mishra", "Age": 10 }

方法二:修改已生成的数组JSON字符串

如果你已经用df.to_json生成了数组格式的JSON文件,也可以通过字符串处理快速转换格式:

import pandas as pd

# 先生成数组格式的JSON字符串
json_array = df.to_json(orient='records', ensure_ascii=False)

# 处理字符串:移除首尾的方括号,把数组内的分隔符替换成换行
json_lines = json_array[1:-1].replace('}, {', '}\n{')

# 写入文件
with open('abcd', 'w') as f:
    f.write(json_lines)

这种方式适合快速修改已有文件,但要注意:如果你的JSON对象内部恰好包含}, {这样的字符串(虽然概率极低),会导致错误替换,所以方法一更稳妥。


内容的提问来源于stack exchange,提问作者Symphony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:15:39