【问题标题】:Formatting JSON from a Pandas data frame for Highcharts within a Django template为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON
【发布时间】:2015-03-05 16:50:59
【问题描述】:

我有一个已转换为 JSON 的 Pandas 数据框,如下所示:

json_data = data_df.to_json()

原始数据框看起来像这样:

    col1  col2  col3  col4
0     1     2     2    -1
1     2     4     3    -2
2     3     6     4    -3
3     4     8     5    -4
4     5     10    6    -5
...

而 JSON 字符串看起来类似于这样:

[{"col1":1,"col2":2,"col3":2,"col4":-1},{"col1":2,"col2":4,"col3":3,"col4":-2},{"col1":3,"col2":6,"col3":4,"col4":-3},{"col1":4,"col2":8,"col3":5,"col4":-4}]

我的Highcharts实现如下:

$(document).ready(function() {

    var my_data = '{{ json_data }}'
            
    // create data chart
    $('#container').highcharts({
        chart: {
            renderTo: 'chart_panel',
            type: 'line',
        },
        legend: {layout: 'vertical',
                 align: 'right',
                 verticalAlign: 'middle',
                 borderWidth: 0,
        },
        title: {text: 'Roehrig Damper Data',
                x: -20 // center title
        },
        xAxis: {title: {text: 'Velocity (m/sec)'}},
        yAxis: {title: {text: 'Force (N)'}},
        series: [ {data: my_data} ],
    });

});

{{ json_data }} 来自我的 Django python 视图,我已经通过浏览器控制台确认它的格式正确。目前我的代码只显示一个空白的Highcharts 图表,其中填充了零数据。我尝试了几种不同的方法来处理我想要的数据,但都没有成功。

我的目标是绘制col2 与col1 并在同一图表上绘制col4 与col3,或者换句话说,x 轴将由col1 和col3 定义。

有没有办法实现我的上述目标,如果可以,如何实现?

编辑

在@Andrew_Lvov 的帮助下,我现在有了一个如下所示的 JSON 对象:

json_data = [
    {
        'name': "col1",
        'data': array([1, 2, 3, 4, 5])},
    {
        'name': "col2",
        'data': array([2, 4, 6, 8, 10])},
    // etc.
]

现在我的问题是它正在将单词array 添加到数据中。

【问题讨论】:

    标签: python json django pandas highcharts


    【解决方案1】:

    试试

    var myData = {{ json_data | safe }};
    

    更新:

    您的数据应采用以下格式:

    json_data = [
        {
            'name': "col1",
            'data': [1, 2, 3, 4, 5]},
        {
            'name': "col2",
            'data': [2, 4, 6, 8, 10]},
    ]
    

    系列参数:

            series: myData
    

    更新 #2:

    json_data = [{'data': list(value.values), 'name': key} for key, value in data_df.items()]
    

    【讨论】:

    • 好的,这是有道理的,但我怎样才能让我的json_data 与您提供的格式相似?我已经使用pandas.to_json(orient='records') 中的参数对其进行了一些更改。查看当前 JSON 格式的编辑。
    • @aus_lacy 已更新。不要忘记将 json_data 转换为 json:json.dumps(json_data)
    • 您的 sn-p 非常接近工作,除了它还包括 data 列中的索引。有没有办法删除或忽略索引列?
    • @aus_lacy,抱歉,没注意到。 [{'name': key, 'data': list(value.values())} for key, value in data_df.items()]
    • 它给了我这个错误'numpy.ndarray' object is not callable。
    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2017-12-18
    • 2010-09-25
    相关资源
    最近更新 更多