【问题标题】:How to display pandas dataframe as a table in html?如何在 html 中将 pandas 数据框显示为表格?
【发布时间】:2020-10-17 05:46:15
【问题描述】:

我正在使用 Flask 来执行此操作。我基本上想在我的网页上显示我的熊猫数据框,但我的网页最终在我的 html 页面上显示:

网站 公司网站电话 电子邮件

这是我用 Flask 尝试过的:

from backend import final_dataframe

@app.route('/results', methods=["GET", "POST"])
def results():
   return render_template('results.html',  tables=final_dataframe.to_html(), titles=final_dataframe.columns.values)

这是我的 html 文件的 sn-p,我使用 Jinja 来显示表格:

 <div  style="width: 50%;margin-left: 25%;margin-top: 58px;">
    {% for table in tables %}
        {{titles[loop.index]}}
        {{ table|safe }}
     {% endfor %}
 </div>

更新:

这就是我在烧瓶中执行 print(final_dataframe.to_html()) 时发生的情况:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>company</th>
      <th>website</th>
      <th>phone</th>
      <th>email</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

好的,我的 backend.py 文件有问题。好像全局变量没有更新:

final_dataframe = pd.DataFrame(columns= ['company', 'website', 'phone', 'email'])

def someFunction(a,b):
  contact_info = pd.DataFrame(myData, columns= ['company', 'website', 'phone', 'email'])
  global final_dataframe
  final_dataframe = final_dataframe.append(contact_info, ignore_index = True)

所以基本上,当程序退出函数时,全局变量(final_dataframe)不会更新。但是,它在函数内部进行了更新。

【问题讨论】:

    标签: python pandas flask jinja2


    【解决方案1】:

    可能是因为你的模板中有一个循环,所以html被.to_html()返回的每个字符分隔,尝试不使用for循环

    <div style="width: 50%;margin-left: 25%;margin-top: 58px;">
        {{ tables|safe }}
     </div>
    

    【讨论】:

    • 它似乎仍然在做同样的事情,只是现在,它在 html 页面上打印了这个:
    • 公司 th> 网站 电话 电子邮件
    • 使用三重花括号,我收到以下错误:jinja2.exceptions.TemplateSyntaxError: expected token ':', got '}'
    • 哦,这是jinja2,然后使用|safe 不转义html字符
    • 好吧,它现在似乎可以工作了,但我只看到表格标题。我没有看到表格的内容(如行)。
    猜你喜欢
    • 2013-07-08
    • 2013-09-23
    • 1970-01-01
    • 2020-04-28
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多