Python 如何从数据框创建HTML表

Python 如何从数据框创建HTML表,python,html,python-3.x,pandas,dataframe,Python,Html,Python 3.x,Pandas,Dataframe,我想从DataFrame创建一个HTML表。表的列数是固定的(不会更改)。但表的行数总是变化的。我简化了我的代码,这样任何csv文件都足以重现这个问题。我的代码来自 注意:我将设计HTML代码(单元格着色、更改字体大小等),我知道DataFrame.to_HTML函数。但是用它来设计HTML代码是不可能的。所以我没有用它 以下是我尝试过的: import pandas as pd data=pd.read_csv("auto.csv") data = data.iloc[

我想从DataFrame创建一个HTML表。表的列数是固定的(不会更改)。但表的行数总是变化的。我简化了我的代码,这样任何csv文件都足以重现这个问题。我的代码来自

注意:我将设计HTML代码(单元格着色、更改字体大小等),我知道
DataFrame.to_HTML
函数。但是用它来设计HTML代码是不可能的。所以我没有用它

以下是我尝试过的:

import pandas as pd

data=pd.read_csv("auto.csv") 
data = data.iloc[:3, : 7] #get first 3 rows and 7 columns
print(data.describe)

# Send email
table = []
table.append("<table>\n")
for obj in data:
    table.append("\t<tr>\n")
    td = []
    for key in dir(obj)[:7]:
        td.append("<td>{0}</td>".format(key))
    table.append("\t\t"+"".join(td))
    table.append("\n\t</tr>\n")

table.append("</table>")

print("".join(table))
将熊猫作为pd导入
数据=pd.read\u csv(“auto.csv”)
data=data.iloc[:3,:7]#获取前3行和7列
打印(数据.描述)
#发送电子邮件
表=[]
表.追加(“\n”)
对于数据中的obj:
table.append(“\t\n”)
td=[]
对于输入目录(obj)[:7]:
td.append(“{0}”.format(key))
table.append(“\t\t”+”.join(td))
table.append(“\n\t\n”)
表.追加(“”)
打印(“.join(表))
这就是结果

<table>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
        <tr>
                <td>__add__</td><td>__class__</td><td>__contains__</td><td>__delattr__</td><td>__dir__</td><td>__doc__</td><td>__eq__</td>
        </tr>
</table>

__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
__添加类包含delattr目录文档__
这是预期的结果:

<table>
        <tr>
                <td>mpg</td><td>cylinders</td><td>displacement</td><td>horsepower</td><td>weight</td><td>acceleration</td><td>_year</td>
        </tr>
        <tr>
                <td>18</td><td>8</td><td>307</td><td>130</td><td>3504</td><td>12</td><td>70</td>
        </tr>
        <tr>
                 <td>28</td><td>38</td><td>207</td><td>110</td><td>3074</td><td>10</td><td>90</td>
        </tr>
</table>

MPG气缸排量马力重量加速度\u年
18830713035041270
283820711030741090
请参见

将数据帧呈现为HTML表

从io导入StringIO
作为pd进口熊猫
样式=“”\
td{背景色:棕褐色}
'''
数据=pd.read\u csv(“auto.csv”)
buff=StringIO()
data.to_html(buff)
html_string=buff.getvalue()
打印(样式+html\u字符串)

我知道
DataFrame.to\u html
。但我会设计HTML代码的样式。如果我使用
DataFrame.to_html
则无法对html代码进行样式设置。是吗?是什么阻止您在HTML表前面加上
前缀并在那里进行格式化?例如,如果我在生成的HTML前面加上
td{background color:tan}
前缀,那么我会得到带有彩色背景的单元格。
from io import StringIO
import pandas as pd

styles = '''\
<style>
td {background-color: tan}
</style>
'''

data=pd.read_csv("auto.csv") 

buff = StringIO()
data.to_html(buff)
html_string = buff.getvalue()
print(styles + html_string)