Как мне пройти по циклу данных pandas на основе уникальных значений в столбце и вставить в отдельную электронную почту Outlook?
Вот мой код:
def Emailer(subject, recipient):
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = recipient
mail.Subject = subject
mail.HtmlBody = """Lots of text"""
attachment = 'C:/Users/Documents/file.pdf'
mail.Attachments.Add(attachment)
mail.Display(True)
Emailer('subject', "multiple e-mails")
Вот мойфрейм данных, который я хочу просмотреть и вставить в каждое отдельное электронное письмо.
df = pd.DataFrame(np.random.randn(10, 2), columns=list('AB'))
df['Email'] = np.random.choice(['john@mail.com', 'mark@mail.com', 'tina@mail.com'], 10)
A B Email
0 -0.740284 0.509764 mark@mail.com
1 0.119413 -1.270088 mark@mail.com
2 1.792915 -0.243748 mark@mail.com
3 0.181352 -1.949043 tina@mail.com
4 -0.172640 0.051009 john@mail.com
5 0.627760 -0.038189 tina@mail.com
6 -0.589791 -3.255643 tina@mail.com
7 1.654046 0.855315 tina@mail.com
8 2.213134 -0.266334 mark@mail.com
9 -0.907995 0.880413 mark@mail.com
Скажем, для Тины ее почта будет такой.Цикл извлекает строки из df['Email']
и вставляет фрейм данных в mail.HtmlBody
, а значение из Email
в mail.To = recipient
.Кроме того, я хочу, чтобы у Марка и Джона были электронные письма с похожей структурой.Тема будет одинаковой для каждого электронного письма.Только «Кому» и «Тело» будет отличаться в зависимости от электронной почты.
To: tina@mail.com
Subject: subject
Body:
Lots of text
A B Email
3 0.181352 -1.949043 tina@mail.com
5 0.627760 -0.038189 tina@mail.com
6 -0.589791 -3.255643 tina@mail.com
7 1.654046 0.855315 tina@mail.com
Редактировать: Я создал цикл for, который разбил информационный кадр на уникальные таблицы:
for email, df_email in df.groupby('Email'):
print(df_email)
A B Email
4 -0.17264 0.051009 john@mail.com
A B Email
0 -0.740284 0.509764 mark@mail.com
1 0.119413 -1.270088 mark@mail.com
2 1.792915 -0.243748 mark@mail.com
8 2.213134 -0.266334 mark@mail.com
9 -0.907995 0.880413 mark@mail.com
A B Email
3 0.181352 -1.949043 tina@mail.com
5 0.627760 -0.038189 tina@mail.com
6 -0.589791 -3.255643 tina@mail.com
7 1.654046 0.855315 tina@mail.com