如何在django中将数据帧更改为html表?

时间:2018-02-26 06:46:35

标签: python django pandas django-templates django-views

我将此数据框从django视图发送到模板html文件

Forecast Date 2018-01-22 05:30:00 147.01 2018-01-23 05:30:00 139.67 2018-01-24 05:30:00 140.51 2018-01-25 05:30:00 144.68 2018-01-26 05:30:00 142.97 2018-01-27 05:30:00 151.83 2018-01-28 05:30:00 151.93 2018-01-29 05:30:00 142.88 2018-01-30 05:30:00 157.31 2018-01-31 05:30:00 145.67

在上面的数据框中,预测是列和日期,值是行,但我希望日期在列中,预测值在另一列中。

这是我试图将数据框更改为html表格的HTML文件。

`<html>
<body>
<table>
    <table>
{% for r in table %}
     {% cycle '<tr>' '' '' '' %}tr>
        <td>{{r.content}}</td>      
    <{% cycle '' '' '' '</tr>' %}
{% endfor %}
</table>
{{accuracy}}
</html>`

1 个答案:

答案 0 :(得分:1)

您可以使用to_html方法将数据框转换为html表,然后将其呈现给您的html。

示例

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO
import pandas as pd

myst="""
2018-01-22 05:30:00    147.01
2018-01-23 05:30:00    139.67
2018-01-24 05:30:00    140.51
2018-01-25 05:30:00    144.68
2018-01-26 05:30:00    142.97
2018-01-27 05:30:00    151.83
2018-01-28 05:30:00    151.93
2018-01-29 05:30:00    142.88
2018-01-30 05:30:00    157.31
2018-01-31 05:30:00145.67
"""

df = pd.read_csv(myf, sep=r"\s\s+", names=["Forecast", "Date"])
print(df.to_html())   #print(df.to_html(index=False)) Without Index

<强>输出:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Forecast</th>
      <th>Date</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2018-01-22 05:30:00</td>
      <td>147.01</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2018-01-23 05:30:00</td>
      <td>139.67</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2018-01-24 05:30:00</td>
      <td>140.51</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2018-01-25 05:30:00</td>
      <td>144.68</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2018-01-26 05:30:00</td>
      <td>142.97</td>
    </tr>
    <tr>
      <th>5</th>
      <td>2018-01-27 05:30:00</td>
      <td>151.83</td>
    </tr>
    <tr>
      <th>6</th>
      <td>2018-01-28 05:30:00</td>
      <td>151.93</td>
    </tr>
    <tr>
      <th>7</th>
      <td>2018-01-29 05:30:00</td>
      <td>142.88</td>
    </tr>
    <tr>
      <th>8</th>
      <td>2018-01-30 05:30:00</td>
      <td>157.31</td>
    </tr>
    <tr>
      <th>9</th>
      <td>2018-01-31 05:30:00145.67</td>
      <td>NaN</td>
    </tr>
  </tbody>
</table>