使用 Python 和 Pandas 将员工数据库与代理电子邮件合并

Using Python and Pandas to Merge Employee Databases with Proxy Emails

我正在做一个项目,我需要获取 Microsoft Office 租户中每个人的唯一 ObjectID,并将其与 HR 提供给我的 table 结合起来。

import pandas as pd

# Imports CSV files
rawexporteddata = pd.read_csv('users_1_13_2021 4_55_49 PM.csv')
hrlist = pd.read_csv('OutlookMasterList.csv')

# Convert email address to lowercase so they'll match the first DF
hrlist['Email Address'].str.lower()

# Merge tables on email/user principle name
merged = hrlist.merge(rawexporteddata, how="left", left_on="Email Address", right_on="User principal name")

merged.to_csv('GettingObjectIDs.csv', index=False)

问题是我们的许多用户都有电子邮件别名,这些别名存在于名为“代理地址”的单独列中的 rawexporteddata 数据框中,并且此单元格包含类似“SMTP:george@company.com”的字符串+smptp:george@othercompany.com+smtp:george@thiscompany.com”。其中一些用户的“用户主体名称”与提供的电子邮件 HR 不同,因此我没有获得他们唯一的 ObjectID。

我在想我需要一些函数来搜索 rawexporteddata['Proxy addresses'] 以查找“@company.com”的任何实例并隔离该电子邮件地址,可能在新列中。我认为迭代该列的 for 语句可能会起作用,但我不确定如何隔离电子邮件地址。有什么想法吗?

您可以用分隔符拆分“代理地址”,然后将拆分扩展为新行。从这里您将只有一列可用于合并。

# transform Proxy addresses into a list of each email address
rawexporteddata['Proxy addresses'] = rawexporteddata['Proxy addresses'].str.split('+')

# form new rows for each Proxy address
rawexporteddata = rawexporteddata.explode('Proxy addresses')