如何将pandas数据框转换为json在django模板中使用

2 投票
1 回答
5091 浏览
提问于 2025-05-01 15:48

我正在尝试从数据框(dataframe)创建 JSON 格式的数据。

response_data = [
        { "x_axis": 30,  "y_axis":  30, "radius": 20, "color": "green" },
        { "x_axis": 70,  "y_axis":  70, "radius": 20, "color": "green" },
        { "x_axis": 110, "y_axis": 100, "radius": 20, "color": "blue" }
    ]
    result = HttpResponse(json.dumps(response_data), content_type = 'application/json')

如果我使用上面的方式,我会得到:

Content-Type: application/json [{"color": "green", "y_axis": 30, "x_axis": 30, "radius": 20}, {"color": "green", "y_axis": 70, "x_axis": 70, "radius": 20}, {"color": "blue", "y_axis": 100, "x_axis": 110, "radius": 20}] 

这正是我想要的格式,但如果我尝试用类似下面的方式从数据框生成:

d = {'one' : pd.Series([1., 2., 3.]),'two' : pd.Series([1., 2., 3., 4.])}
df0_fa = pd.DataFrame(d)
df0_js = df0_fa.to_json()
result2 = HttpResponse(json.dumps(df0_js), content_type = 'application/json')

我得到的 JSON 格式是:

Content-Type: application/json "{\"one\":{\"0\":1.0,\"1\":2.0,\"2\":3.0,\"3\":null},\"two\":{\"0\":1.0,\"1\":2.0,\"2\":3.0,\"3\":4.0}}" 

但我真正想要的是:

Content-Type: application/json [{"one" : 1.0,"two" :1.0},{"one" : 2.0,"two" :2.0},{"one" : 3.0,"two" :3.0},{"one" : null,"two" :4.0}]

这里的反斜杠(backslash)是干什么用的?还有方括号([])呢?我尝试了不同的方向设置,但都不行。有什么建议吗?谢谢。

暂无标签

1 个回答

7

你在把数据转换成JSON格式时做了两次。df0_fa.to_json()已经把数据转换成JSON格式了,然后json.dumps()又再转换一次。你只需要这样做就可以了:result2 = HttpResponse(df0_js, content_type = 'application/json')

关于to_json()的一些说明:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html

关于json.dumps()的一个不错的页面:http://www.pythonforbeginners.com/python-on-the-web/parsingjson/

撰写回答