我正在尝试将多个数据帧作为电子邮件中的表格发送。使用df.to_html()
我能够为我附加的表格呈现HTML字符串作为电子邮件正文的一部分。我成功地能够在电子邮件中获取表格。
html.append(table.to_html(na_rep = " ",index = False))
body = '\r\n\n<br>'.join('%s'%item for item in html)
msg.attach(MIMEText(body, 'html'))
但是如何在这些表格的标题中添加背景颜色?
答案 0 :(得分:16)
您可以尝试以两种方式执行此操作:
来自set_table_styles
的pandas.DataFrame.style
:
import pandas as pd
import numpy as np
# Set up a DataFrame
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[0, 2] = np.nan
df_html_output = df.style.set_table_styles(
[{'selector': 'thead th',
'props': [('background-color', 'red')]},
{'selector': 'thead th:first-child',
'props': [('display','none')]},
{'selector': 'tbody th:first-child',
'props': [('display','none')]}]
).render()
html.append(df_html_output)
body = '\r\n\n<br>'.join('%s'%item for item in html)
msg.attach(MIMEText(body, 'html'))
或.to_html
:
df_html_output = df.to_html(na_rep = "", index = False).replace('<th>','<th style = "background-color: red">')
html.append(df_html_output)
body = '\r\n\n<br>'.join('%s'%item for item in html)
msg.attach(MIMEText(body, 'html'))
第二个提供了在导出期间删除索引列的选项(to_html
),而无需进行太多HTML
调整;所以它可能更适合您的需求。
我希望这证明有用。
答案 1 :(得分:2)
我建议使用Jinja2进行方便的HTML格式化。只需创建一个word文档,添加两行{{Header}}以及您想要的任何背景颜色{{DF}},添加分页符并将其另存为html。现在使用Jinja2渲染模板。以下是如何使用Jinja2的示例代码:
from jinja2 import Environment, FileSystemLoader
import StringIO
import pandas as pd
Template_Path = '/home/test/'
DF = [pd.DataFrame()]*5 # List of Dataframes
Header_Text = ['header']*5 # list of headers
env = Environment(loader=FileSystemLoader(Template_Path))
template = env.get_template('PDF_Temp.html') # name of your html template
Master_HTML = ''
for x in range(len(DF)):
buf = StringIO.StringIO()
DF_HTML = DF[x].to_html(buf)
template_vars = {"Header" : Header_Text[x] ,
"DF" : buf.getvalue()
}
# Create PDF
Master_HTML += template.render(template_vars)
FN = 'test.html'
with open(FN, "w") as f:
f.write(Master_HTML.encode('utf-8') )
这是关于Jinja2的一个很好的教程: http://pbpython.com/pdf-reports.html