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

如何将Pandas DataFrame转为JSON对象并正确追加至数组?

解决方法:区分JSON字符串与Python对象,先操作对象再序列化

你遇到的问题核心是混淆了JSON字符串和Python中的JSON结构对象:df.to_json()返回的是已经序列化好的字符串,而不是可直接操作的字典/列表对象,所以直接追加到数组里会把整个字符串当作一个元素,自然带上单引号破坏结构。

下面给你两种可行的解决方案,推荐第一种更直接的方式:

方案一:直接生成Python字典列表(推荐)

不用先转成JSON字符串,而是用df.to_dict('records')直接把DataFrame转换成Python的字典列表(这就是你想要的"JSON对象"在Python中的对应形式),然后把这些字典追加到数组里,最后再统一序列化成标准JSON字符串。

完整代码示例:

import pandas as pd
import json

# 示例DataFrame(替换成你的实际数据)
df1 = pd.DataFrame({"test": ["w"], "param": [1]})
df2 = pd.DataFrame({"test": ["w2"], "param": [2]})

# 初始化数组,用来存储Python字典对象
result_list = []
# 将DataFrame转成字典列表并追加到数组
result_list.extend(df1.to_dict('records'))
result_list.extend(df2.to_dict('records'))

# 最后将整个Python数组序列化成符合要求的JSON字符串
final_json = json.dumps(result_list, indent=2)
print(final_json)

运行后输出的就是你期望的格式:

[
  {
    "test": "w",
    "param": 1
  },
  {
    "test": "w2",
    "param": 2
  }
]

方案二:解析已有的JSON字符串(适合已有JSON字符串的场景)

如果因为某些原因你已经拿到了to_json()返回的字符串,也可以用json.loads()把字符串解析成Python对象,再追加到数组里,最后再序列化:

import pandas as pd
import json

df1 = pd.DataFrame({"test": ["w"], "param": [1]})
df2 = pd.DataFrame({"test": ["w2"], "param": [2]})

result_list = []
# 解析df1的JSON字符串(注意lines=True时每行是一个JSON对象,需要拆分)
for line in df1.to_json(orient='records', lines=True).splitlines():
    result_list.append(json.loads(line))
# 同样处理df2
for line in df2.to_json(orient='records', lines=True).splitlines():
    result_list.append(json.loads(line))

# 转成最终JSON
final_json = json.dumps(result_list, indent=2)
print(final_json)

关键原理说明

  • to_dict('records'):直接生成Python原生的字典列表,此时数组里的元素是可操作的字典,不是字符串,不会出现单引号包裹的问题。
  • json.dumps():把Python的列表/字典结构序列化成标准的JSON字符串,这一步才是生成最终符合格式要求的JSON内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:13:37