使用 Python 将 Pandas DataFrame 保存为 HTML
有时我们将 DataFrame 渲染为 HTML 表格以在网页中表示它。如果我们想在 HTML 中显示同一个表格,我们不需要在 HTML 中编写它的代码来重新制作那个表格。
我们可以使用内置的方法或在 python 中手动编写代码来将 Pandas DataFrame 转换为 HTML 表格,这将在本文中讨论。
使用 to_html()
方法将 Pandas DataFrame 保存为 HTML 文件
在下面的代码中,我们有学生的数据。我们使用 pandas 库中提供的方法 to_html()
将 Pandas DataFrame 转换为 HTML。
我们将使用我们的 DataFrame 对象调用此方法,并传递表示表格的新 HTML 文件的名称。如果我们只传递 HTML 文件的名称,它将在当前目录中创建。
我们还可以提供路径以及 HTML 文件的名称,以将其保存在其他位置。此方法会将整个 DataFrame 转换为 <table>
元素,并且列将包裹在 <thead>
元素中。
DataFrame 的每一行都将被包裹在 HTML 的 <tr>
元素中。此方法将返回 DataFrame 的 HTML 格式。
示例代码:
#Python 3.x
import pandas as pd
df = pd.read_csv('Student.csv')
display(df)
df.to_html('Student.html')
输出:
输出将在 Student.html
文件中。
HTML - 代码:
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>ST_Name</th>
<th>Department</th>
<th>Marks</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>Jhon</td>
<td>CS</td>
<td>60</td>
</tr>
<tr>
<th>1</th>
<td>Alia</td>
<td>EE</td>
<td>80</td>
</tr>
<tr>
<th>2</th>
<td>Sam</td>
<td>EE</td>
<td>90</td>
</tr>
<tr>
<th>3</th>
<td>Smith</td>
<td>CS</td>
<td>88</td>
</tr>
</tbody>
</table>
手动将 Pandas DataFrame 转换为 HTML
表
将 Pandas DataFrame 保存为 HTML 的另一种方法是从头开始编写代码以进行手动转换。
首先,我们在下面的代码中以 w+
模式打开了一个文件 student.html
。如果文件不存在,此模式将创建一个文件。
在这个文件中,我们的 HTML 代码将被保存。在这里,我们将整个表包裹在 <table>
中,然后我们遍历 DataFrame 的列并将它们包裹在 <th>
中。
最后,我们对行进行了迭代并将它们包装在 <tr>
中。
示例代码:
#Python 3.x
import pandas as pd
df = pd.read_csv('Student.csv')
display(df)
with open(r'student.html', 'w+') as f:
f.write('<table>')
for header in df.columns.values:
f.write('<th>'+str(header)+'</th>')
for i in range(len(df)):
f.write('<tr>')
for col in df.columns:
value = df.iloc[i][col]
f.write('<td>'+str(value)+'</td>')
f.write('</tr>')
f.write('</table>')
输出:
HTML - 代码:
<table><th>ST_Name</th><th>Department</th><th>Marks</th><tr><td>Jhon</td><td>CS</td><td>60</td></tr><tr><td>Alia</td><td>EE</td><td>80</td></tr><tr><td>Sam</td><td>EE</td><td>90</td></tr><tr><td>Smith</td><td>CS</td><td>88</td></tr></table>
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn