如何根据Pandas中的条件将一列的值复制到另一列?

2024-10-02 14:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下,将票据发送到第1列中的电子邮件。因此,如果有7张票和2封电子邮件,程序将迭代电子邮件并发送所有票。我的问题是,当所有电子邮件都发送时,我如何将电子邮件ID分配给所有者列

示例:我确定所有票证都将发送到“1”列中的电子邮件ID,如何将“1”列中的电子邮件ID分配给“所有者”列中的所有7行

我在文件“combo.csv”中有以下输入

0            1                 2                 3     owner
0   0   sunith@email.com    116675  Random Message 1    NaN
1   1   sunith@email.com    116674  Random Message 2    NaN
2   2   NaN                 116675  Random Message 3    NaN
3   3   NaN                 116676  Random Message 4    NaN
4   4   NaN                 116677  Random Message 5    NaN
5   5   NaN                 116678  Random Message 6    NaN
6   6   NaN                 116679  Random Message 7    NaN

请帮忙

e = pd.read_csv('combo.csv')
f = e.fillna("")
print(f)
emails = f['1'].values
email_index = 0
count_of_emails = len(emails)
print("count of emails" + str(count_of_emails))
ticket_number = list(f['2'].values)
desc_value = f['3'].values
for ticket_index in range(len(ticket_number)):
    if not emails[email_index]:
        continue
    if email_index != count_of_emails:
        print("resetting email Index")
        email_index = 0
    outlook = win32com.client.Dispatch("Outlook.Application")
    if not ticket_number[ticket_index]:
        message = f'Random Message'
    else:
        message = f'Hello the ticket number {int(ticket_number[ticket_index])} with the Description {desc_value[ticket_index]} has been assigned to ' \
                  f'you. '
        adding_owner = pd.read_csv('combo.csv')
        adding_owner['owner'] = emails
        owner_added = adding_owner.copy()
        # del owner_added['4']
        owner_added = owner_added.loc[:, ~owner_added.columns.str.contains('^Unnamed')]
        owner_added.to_csv('combo.csv')

    mail = outlook.CreateItem(0)
    mail.To = emails[email_index]
    mail.Subject = 'This is a test'
    mail.HTMLBody = message
    mail.Send()
    print("Sent email to" + emails[email_index])
    email_index = email_index + 1

如果所有电子邮件都已发送,则输出应如下所示

Output:

   0            1                  2                 3     owner
    0   0   sunith@email.com    116675  Random Message 1    sunith@email.com
    1   1   sunith@email.com    116674  Random Message 2    sunith@email.com
    2   2   NaN                 116675  Random Message 3    sunith@email.com
    3   3   NaN                 116676  Random Message 4    sunith@email.com
    4   4   NaN                 116677  Random Message 5    sunith@email.com
    5   5   NaN                 116678  Random Message 6    sunith@email.com
    6   6   NaN                 116679  Random Message 7    sunith@email.com

Tags: csvcomnumbermessageaddedindex电子邮件email
1条回答
网友
1楼 · 发布于 2024-10-02 14:27:34

假设您的表被分解为每个唯一电子邮件的.csv,最简单的解决方案是:

In [57]: test.iloc[:, 0] = df.iloc[:, 3].ffill()

In [58]: df
Out[58]:
                  0       1               2                 3
0  sunith@email.com  116675               1  sunith@email.com
1  sunith@email.com  116674               2  sunith@email.com
2               NaN  116675               3  sunith@email.com
3               NaN  116676               4  sunith@email.com
4               NaN  116677               5  sunith@email.com
5               NaN  116678               6  sunith@email.com
6               NaN  116679               7  sunith@email.com

相关问题 更多 >