使用Django模板标签'slice'切片pandas数据帧?

时间:2017-08-30 07:29:30

标签: python django pandas django-templates

我有一个pandas数据框,我将其传递给Django HTML。我想在使用Django的模板过滤器'slice'打印出来时对数据帧进行子集化。切片适用于list和django的对象QuerySet,但是当与pandas dataframe一起使用时,它无论如何都不起作用。我想知道为什么以及如何能够或不能工作。

示例:我在下面的示例中切换了1行,但是当我的代码运行时,它会显示所有3行。

示例代码:

在views.py中

## Libraries
from django.shortcuts import render
from django.http import HttpResponse

import pandas as pd


def dataframe_view(request):
    ## Creating pandas dataframe
    d = {'alphabet': ['a','b','c'], 'num':[1,2,3]}
    df = pd.DataFrame(d)
    return render(request, 'dataframe.html', {'df':df})
dataframe.html中的

<html>
<body>
...
<table>
  <thead>
    <tr>
      <th>{{ df.columns.0 }} </td>
      <th>{{ df.columns.1 }} </td>
    <tr>
  </thead>
  <tbody>
     {% for index, row in df.iterrows|slice:":1" %}
     <tr>
       <td> {{row.0}} </td>
       <td> {{row.1}} </td>
     </tr>
     {% endfor %}
  </tbody>
</table>
...
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您想要切片迭代器,但可能只需要使用tolist

 {% for row in df.values.tolist|slice:"1" %}
 <tr>
   <td> {{row.0}} </td>
   <td> {{row.1}} </td>
 </tr>
 {% endfor %}