[英]How to copy a column in Pandas from one dataset to another based on condition
[英]How to copy values of one column to another based on condition in Pandas?
我的代碼如下所示,將門票發送到第一列中的電子郵件。 因此,如果有 7 張票和 2 封電子郵件,程序將遍歷電子郵件並發送所有票。 我的問題是當所有電子郵件都發送完畢后,如何將 email ID 分配給所有者列。
示例:我確定所有門票都將發送到“1”列中的 email ID,如何將“1”中的 email 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 應該是這樣的
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
假設您的表被分解為 .csv 每個唯一的 email,最簡單的解決方案是:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.