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



我正在进行一个项目,我需要获得Microsoft Office租户中每个人的唯一ObjectID,并将其与人力资源部提供给我的表相结合。

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数据帧上一个名为"的单独列中;"代理地址";,并且该单元格包含一个类似于"0"的字符串;SMTP:george@company.com+smptp:george@othercompany.com+smtp:george@thiscompany.com&";。这些用户中的一些用户具有";用户主体名称";与HR提供的电子邮件不同,所以我没有得到他们唯一的ObjectID。

我想我需要一些函数来搜索rawexporteddata["代理地址"]中的任何"@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')

最新更新