Pandas发送包含数据框的电子邮件作为可视化表格

18

以这个例子为例:

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()
2个回答

40

尝试:

  • 使用 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())

2
救命稻草!非常感谢。完美运作。 - Nick Dragosh
我遇到了这个错误 **AttributeError: 'DataFrame' object has no attribute 'to_html'**,请给我建议解决该问题。 - RahulKumarShaw
1
我们在这个过程中进行了哪些身份验证? - undefined

5

安装 pretty-html-table

from pretty_html_table import build_table

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

<body>
        {0}
</body>

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

您无需担心格式问题,如果您的DataFrame中包含网站链接,则输出结果将仍旧带有超链接。


我遇到了这个错误:AttributeError: 'DataFrame' object has no attribute 'empty' 你能帮我解决一下吗? - RahulKumarShaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接