熊猫发送包含数据框的电子邮件作为可视表

Posted

技术标签:

【中文标题】熊猫发送包含数据框的电子邮件作为可视表【英文标题】:Pandas send email containing dataframe as a visual table 【发布时间】:2018-11-06 22:21:24 【问题描述】:

举个例子:

df_1 = ([1,2,3,5])
df_2 = ([10,20,30,50])
df_test =pd.concat([pd.DataFrame(df_1),pd.DataFrame(df_2)],axis=1)

如何通过 gmail 发送带有此数据框的电子邮件以使其看起来像一个表格?

这是我尝试过的:

import smtplib

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr , ".......")

msg = df_test.to_html()
server.sendmail(fromaddr, toaddr, msg)
server.quit()

【问题讨论】:

【参考方案1】:

安装漂亮的html表

from pretty_html_table import build_table

body = """
<html>
<head>
</head>

<body>
        0
</body>

</html>
""".format(build_table(df, 'blue_light'))

您不必担心格式,如果您的 DataFrame 中有网站链接,那么输出将仅包含超链接。

【讨论】:

【参考方案2】:

试试:

使用 str.format 将您的 DF html 附加到电子邮件正文 html。

例如:

from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from smtplib import SMTP
import smtplib
import sys


recipients = ['ToEmail@domain.com'] 
emaillist = [elem.strip().split(',') for elem in recipients]
msg = MIMEMultipart()
msg['Subject'] = "Your Subject"
msg['From'] = 'from@domain.com'


html = """\
<html>
  <head></head>
  <body>
    0
  </body>
</html>
""".format(df_test.to_html())

part1 = MIMEText(html, 'html')
msg.attach(part1)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.sendmail(msg['From'], emaillist , msg.as_string())

【讨论】:

救命稻草!非常感谢。完美运行。

以上是关于熊猫发送包含数据框的电子邮件作为可视表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用exchangelib在python中将熊猫数据框作为电子邮件附件发送

来自数据框的嵌套字典,内部字典包含熊猫系列作为值

如何使用python从熊猫数据框中将电子邮件发送到具有不同主题的不同收件人地址

如何将非结构化的 excel 电子表格加载到熊猫中?

pb中 如何把两个表中的内容导出到一个电子表格 如何把一个字段作为下拉列表框的item

熊猫:使用数据框的多列作为另一个的索引