在电子邮件中将数据帧作为表格发送时,为数据框的各列添加颜色?

时间:2018-02-28 00:32:02

标签: python pandas email dataframe

通过电子邮件发送数据框时为各个列着色

我有一个数据框,我通过电子邮件发送作为带有附件的表格,代码工作得很好,花花公子,但我现在要求用不同的颜色着色一些特定的列,我尝试更改html部分渲染表并尝试了pandas数据框的样式功能但无济于事。 这是我的代码:

from tabulate import tabulate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import pandas as pd
from email.mime.base import MIMEBase
from email import encoders

me = 'myemail@gmail'
password = 'mypassword'
server = 'smtp.gmail.com:587'
you = 'myreceipient@gmail.com'

text = """
Hello, Friend.

Here is your data:

{table}

Regards,

Me"""
# here i tried to directly apply a color style into the table via <p> tag
html = """
<html>
<head>
<style> 
  table, th, td {{ border: 1px solid black; border-collapse: collapse; }}
  th, td {{ padding: 5px; }}
</style>
</head>
<body><p>Hello, Friend This data is from a data frame.</p>
<p>Here is your data:</p>
<p style = "color: yellow;" >
{table}
</p>
<p>Regards,</p>
<p>Me</p>
</body></html>
"""

df = pd.read_csv("MyFile.csv")
col_list = list(df.columns.values)
# here again a tried to setstyle directly on the pandas dataframe.
df.style.set_properties(**{'background-color': 'white',
                           'color': 'yellow',
                           'border-color': 'black'})
data = df
text = text.format(table=tabulate(data, headers=col_list, tablefmt="grid"))
html = html.format(table=tabulate(data, headers=col_list, tablefmt="html"))

message = MIMEMultipart(
    "alternative", None, [MIMEText(text), MIMEText(html,'html')])

message['Subject'] = "sending early morning "
message['From'] = me
message['To'] = you
import glob, os
os.chdir("D://FolderLogFileUploads//")
file_list = []
filename = "File1.csv"
for file in glob.glob("*.csv"):
    file_list.append(file)
if filename in file_list:
    target_file = filename
attachment = open(target_file, 'rb')

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= "+filename)

message.attach(part)
server = smtplib.SMTP(server)
server.ehlo()
server.starttls()
server.login(me, password)
server.sendmail(me, you, message.as_string())
print("message with attachment sent successfully")
server.quit()

PS:我的列表是[“name”,“city”,“e_id”,“pay_band”],我想要我的col:“e_id”和“city”是特定颜色说黄色

0 个答案:

没有答案