在 Django 模板中循环 Pandas 表

Posted

技术标签:

【中文标题】在 Django 模板中循环 Pandas 表【英文标题】:Loop Pandas table in Django template 【发布时间】:2018-02-13 08:42:50 【问题描述】:

我有一个 Pandas 表,其中填充了我认为的值。此视图将此数据发送到我的模板。不幸的是,尽管我可以在 python shell 中循环,但我无法循环这些值。我附上我的桌子和我的尝试:

我的表(MyTable):

ID    day      data
_|___________|_____
0| 2017-01-01|100.0|
1| 2017-01-02|99.8 |
2| 2017-01-03|90.0 |

我的尝试:

%for i, b in MyTable.itertools() %
            <td>b['day']</td><td> b['data']</td>
%endfor% 

我收到以下错误消息:

Could not parse the remainder: '()' from 'MyTable.iterools()'

在 python shell(我测试的地方)中,我可以通过以下方法循环表格。 如何在 Django 模板中循环我的熊猫表?提前谢谢你。

【问题讨论】:

那是模特吗??请发布您的视图和模型的代码 @Exprator 该表是左连接的结果:MyTable = pd.merge(day, data, how='left', on=['day', 'day']) 根据您在模板中尝试执行的操作进行计算,然后将它们作为上下文发送到模板并显示它 是的,我进行了计算并将MyTable 作为上下文发送,但我无法循环。 甚至循环也必须在视图内完成 【参考方案1】:

正如明确记录的那样,Django 模板语言不允许()[]。函数被自动调用,点符号用于项目查找。

另外,Pandas 数据表没有itertools 方法;你可能是指itertuples,它的工作原理是这样的:

% for b in MyTable.itertuples %
        <td> b.day </td><td>  b.data </td>
% endfor % 

【讨论】:

【参考方案2】:

读取您的 pandas 表数据以列出

像这样:

context["data"]= ["id": 0, "day": "2017-01-01", "data": "100.0", ..., ...]

return render_to_response(template_name, context)

html 中:

% for d in data %
    <h1> d.id, d.day, d.data </h1>
% endfor %

【讨论】:

以上是关于在 Django 模板中循环 Pandas 表的主要内容,如果未能解决你的问题,请参考以下文章

在另一个模板中显示来自 Django 视图的 HTML 表

django模板循环一些表行只显示一次

Django - 在模板中格式化/访问 Pandas.to_dict() 数据框

Django模板仅在for循环中第一次出现匹配时执行

如何比较两个for循环的值并在django模板中使用if语句?

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