首页 > 解决方案 > 如何将 pyspark 数据框转换为 django html 表?

问题描述

我在所有这些方面都很初学者。所以我的 HTML 代码看起来像这样 -->

<table id="myTable" class="table table-dark table-striped">
      {% for item in tnames %}
        <tr>
          <th scope="col">{{ item }}</th>
        </tr>
        {% endfor %}
        {% for values in datas %}
        <tr>
          <td scope="row"> {{ values }}</td>
        </tr> 
      {% endfor %}
        </table>

django 获取 html 列表的代码是这样的 -->

tnames = [] 
for n in df.columns: 
    tnames.append(n)

datas=[]
for i in df.collect():
   datas.append(tuple(i))

输出是这样的 在此处输入图像描述

如何解决?是的,我做错了什么。那么正确显示它们的正确方法是什么。先感谢您。

标签: pythonhtmldjangopyspark

解决方案


实际上,您可以(几乎)直接从 pyspark 转换为 HTML(通过 pandas)。

html_content = df.toPandas().to_html()

一个简单的例子 df :

spark.range(2).toPandas().to_html()

'<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>id</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>'

使用不同的选项(请参阅doc),您可以完全实现您想要的。


如果你想保持你的观点,你需要改变一点代码。

请记住:

  • <tr>是表格行(1 表示标题,1 表示 的每个元素datas),
  • <th>是表头( 中的每个元素为 1 tnames
  • <td>datas是表数据( for循环中的-for循环的每个元素的每个元素1 )。
tnames = df.columns

datas = [tuple(row) for row in df.collect()]
<table id="myTable" class="table table-dark table-striped">
    <tr>
        {% for item in tnames %}
        <th scope="col">{{ item }}</th>
        {% endfor %}
    </tr>

    {% for values in datas %}
    <tr>
        {% for value in values %}
        <td scope="row"> {{ value }}</td>
        {% endfor %}
    </tr> 
    {% endfor %}
</table>

推荐阅读