2017-08-30 3 views
1

私はDjango HTMLに渡したパンダのデータフレームを持っています。私はDjangoのテンプレートフィルタ 'スライス'を使ってそれを印刷するときに、データフレームをサブセット化したいと思います。スライスはリストとdjangoのオブジェクトQuerySetで動作しますが、何とかpandasデータフレームで使用すると動作しません。私はなぜ、これが働くことができるのか、できないのかを知りたい。Djangoテンプレートタグ 'slice'を使ってpandasデータフレームをスライスしますか?

例:以下の例では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> 

答えて

0

にあなたはイテレータをスライスしたいのですが、あなただけの必要することができます使用tolist

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

これは完全に機能します。また、{%endfor%}を追加していただきありがとうございます。 – addicted

関連する問題