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

如何在Django中单独展示DataFrame分组后的平均周期数据?

解决方案

问题出在你将Pandas的分组统计结果直接转为HTML字符串传入模板,这种结构无法被Django模板引擎解析进行循环遍历。你需要先将Pandas的计算结果转换为Python原生的可迭代数据结构(如列表、字典),再传入模板进行循环渲染。

1. 调整视图代码:转换数据结构

不要将Pandas结果转为HTML,而是用to_dict()方法将其转换为模板可遍历的格式:

from django.shortcuts import render
import pandas as pd
from .models import Main

def your_view(request):
    # 从数据库获取数据并转为DataFrame
    queryset = Main.objects.all().values("title", "cycle_time")
    df = pd.DataFrame(queryset)
    
    # 分组计算cycle_time平均值,重置索引保留title列
    grouped_avg = df.groupby("title")["cycle_time"].mean().reset_index()
    
    # 转换为列表字典格式(每个元素是包含title和cycle_time的字典)
    grouped_data = grouped_avg.to_dict("records")
    
    # 传入模板
    return render(request, "your_template.html", {"grouped_data": grouped_data})

如果你更倾向于键值对形式(title作为键,平均值作为值),可以这样转换:

grouped_data = grouped_avg.set_index("title")["cycle_time"].to_dict()

2. 模板中使用for循环渲染

根据传入的数据结构,编写对应的模板代码:

列表字典格式的渲染:

<div class="grouped-stats">
    <h2>各标题分组平均Cycle Time</h2>
    {% for item in grouped_data %}
        <div class="stat-item">
            <span class="title">{{ item.title }}</span>
            <span class="avg-time">平均耗时:{{ item.cycle_time|floatformat:2 }}</span>
        </div>
    {% empty %}
        <p>暂无统计数据</p>
    {% endfor %}
</div>

键值对字典格式的渲染:

<div class="grouped-stats">
    <h2>各标题分组平均Cycle Time</h2>
    {% for title, avg_time in grouped_data.items %}
        <div class="stat-item">
            <span class="title">{{ title }}</span>
            <span class="avg-time">平均耗时:{{ avg_time|floatformat:2 }}</span>
        </div>
    {% empty %}
        <p>暂无统计数据</p>
    {% endfor %}
</div>

3. 保留原HTML表格的同时单独展示数据(可选)

如果需要同时展示Pandas生成的完整HTML表格和单独的分组数据,可以在视图中同时传入两种数据:

return render(request, "your_template.html", {
    "grouped_data": grouped_data,
    "table_html": grouped_avg.to_html()
})

模板中用|safe过滤器渲染HTML表格:

<!-- 完整表格 -->
<div class="full-table">
    {{ table_html|safe }}
</div>

<!-- 单独分组展示 -->
<div class="grouped-stats">
    <!-- 上面的循环代码 -->
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:45:42