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

如何避免Pandas to_json()将列表包裹在单引号中

解决Series转JSON数组时带多余引号的问题

这个问题我之前也碰到过,核心原因是to_json(orient='values')返回的是字符串形式的JSON数组,直接放进字典里的话,最终输出时它就会被当成普通字符串,带着额外的引号,自然会给解析带来麻烦。给你两个简单的解决思路:

方法一:直接将Series转为Python列表再序列化

这是最直接高效的方式,pandas的Series可以通过.tolist()方法直接转为原生Python列表,之后再用标准库的json.dumps()把整个字典序列化为JSON字符串,这样生成的JSON里的数组就是真正的JSON数组,没有多余引号。

示例代码:

import json
import pandas as pd

# 假设df是你的目标DataFrame
output_json = {}
output_json['count_time_fitness_timeseries'] = {
    'x': df.fitness_date.tolist(),
    'y': df.minutes_fitness.tolist(),
    'labels': df.minutes_fitness_hhmm.tolist()
}

# 生成最终的JSON字符串
final_json = json.dumps(output_json)
print(final_json)

方法二:解析to_json的结果为Python对象

如果你一定要用to_json方法,可以先用它生成JSON字符串,再通过json.loads()把字符串解析为Python列表,这样字典里存储的就是列表而非字符串,最终序列化时就能得到正确的JSON数组。

示例代码:

import json
import pandas as pd

output_json = {}
output_json['count_time_fitness_timeseries'] = {
    'x': json.loads(df.fitness_date.to_json(orient='values')),
    'y': json.loads(df.minutes_fitness.to_json(orient='values')),
    'labels': json.loads(df.minutes_fitness_hhmm.to_json(orient='values'))
}

final_json = json.dumps(output_json)
print(final_json)

小提示

方法一比方法二更高效,因为它省去了“转JSON字符串→解析回Python对象”的额外步骤,推荐优先使用第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:47:43