如何用Python实现邮件中DataFrame非0结果的HTML红色显示
实现DataFrame Findings列非0值邮件中红色显示的方法
要实现当DataFrame的Findings列值非0时在邮件正文中显示红色,你可以借助pandas的Styler类自定义单元格样式,再将带样式的HTML嵌入邮件。具体步骤如下:
1. 为DataFrame添加样式规则
在生成df_id后,定义一个样式函数,为Findings列中非0的单元格设置红色字体:
def highlight_non_zero(val): # 仅针对Findings列设置样式 color = 'red' if val != 0 else 'black' return f'color: {color}' # 应用样式到Findings列,生成带样式的HTML styled_html = df_id.style.applymap(highlight_non_zero, subset=['Findings']).to_html(index=False)
2. 修改邮件HTML代码
将原邮件中直接使用df_id.to_html()的部分替换为上面生成的styled_html:
msg = MIMEMultipart('mixed') msg['Subject'] = SUBJECT msg['From'] = FROM msg['To'] = ','.join(TO) html = f""" <html><body> <h1> </h1> <p> Please see the summary below {styled_html} </p> </body></html> """ msg_text = MIMEText(html, 'html') msg.attach(msg_text)
关键说明
applymap方法配合subset参数,仅对Findings列的单元格应用样式,避免不必要的性能消耗。Styler.to_html()生成的HTML包含内联样式,绝大多数邮件客户端都能正常解析渲染。
内容的提问来源于stack exchange,提问作者bananas
相关产品推荐
相关产品推荐

