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

Posted

技术标签:

【中文标题】如何将 pandas 数据框转换为 json 以在 django 模板中使用【英文标题】:how to convert pandas dataframe to json to use in django template 【发布时间】:2014-12-31 21:19:26 【问题描述】:

我正在尝试从数据框创建 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]

这里的反斜杠是做什么的?和 [] 我尝试了不同的方向设置但不起作用。任何建议将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

您将其双重转换为 JSON。 df0_fa.to_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/

【讨论】:

HttpResponse(df0_js, content_type = 'application/json') 不适用于我的情况

以上是关于如何将 pandas 数据框转换为 json 以在 django 模板中使用的主要内容,如果未能解决你的问题,请参考以下文章

将 json 转换为 Pandas 数据框

如何将此嵌套的 JSON 以柱状形式转换为 Pandas 数据框

将 pandas 嵌套的 JSON 结构转换为数据框

将 JSON 时间戳字符串转换为 pandas 数据框中的 python 日期

将 Json 转换为 Pandas 数据框

如何删除单引号,并在转换为to_json后将括号添加到pandas数据框中?