如何在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
相关产品推荐
相关产品推荐

