我有一个数据帧(df),每列的值如下所示:
如何基于df['Owning']和df['Type']中的唯一值循环遍历pandas数据帧,并将其分离到具有不同所有者和抄送列表的不同Outlook电子邮件中
下面是为一种“拥有”类型发送的代码
TROGY=df[df['Owning']=='TROGY']
TROGY_21=TROGY[[TROGY['Type']=='210s']
TROGY_22=TROGY[[TROGY['Type']=='220s']
TROGY_21C2=TROGY_21[TROGY_21['CLASS']=='CLASS 2']
TROGY_21C3=TROGY_21[TROGY_21['CLASS']=='CLASS 3']
TROGY_22C2=TROGY_22[TROGY_22['CLASS']=='CLASS 2']
TROGY_22C3=TROGY_22[TROGY_22['CLASS']=='CLASS 3']
sender = 'donotreply@outlook.com'
recipient = TROGY['Owner'] ---- group by df['Owning'] and df['Type']
subject = 'Highlight For the Day XXX, YYYYY'
XXX referring to df['Owning']
YYYYY referring to df['Type']
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = ','.join(recipient)
body = ("""\
<html>
<head></head><h2 align=center>CONVERSION</h2>
<body>
<div>Dear Conversion Owners, below is the highlight for the day.</div>
Class 2
{0}
Class 3
{1}
</body>
</html>
""".format(TROGY_21C2_Block.to_html(),TROGY_21C3.to_html()))
msg.attach(MIMEText(body, 'html'))
try:
smtpObj = smtplib.SMTP('relay.xx.com', 'xx')
smtpObj.sendmail(sender, recipient, msg.as_string())
print ("Successfully sent emai")
smtpObj.quit()
except smtplib.SMTPException:
print ("Error: unable to send email")
期望的结果将是总共发送5封电子邮件给“所有者”栏中指定的收件人,邮件标题不同
电子邮件1标题:“21世纪特洛伊之日的亮点”
收件人:Kent,lili
电子邮件2标题:“220年代特洛伊的一天亮点”
收件人:肯特
电子邮件3标题:“21世纪PHM当天的亮点”
收件人:bose
电子邮件4标题:“21世纪融合日亮点”
收件人:Nikki
电子邮件5标题:“当天亮点融合,220s”
收件人:加达姆
您可以使用带有
["Owning", "Type"]
的pandasgroupby作为参数。之后,使用to_list()
overg["Owner"]
创建收件人列表。对于主题文本,您可以使用groupby
函数的返回,该函数是所使用的每个列的组的名称输入sample.csv
相关问题 更多 >
编程相关推荐