Python和熊猫。检查“名称”和“ last_name”列中的值是否在“电子邮件”列中

时间:2018-08-15 20:54:04

标签: python pandas csv dataframe

在以下熊猫df中,如何检查电子邮件列中是否包含姓名和姓氏?

Ex df:

header:   f_name    l_name    email
values    Peter     Gabriel   peter.gabriel@email.com

如何检查电子邮件peter.gabriel是否与f_namel_name值相对应?

如何打印错误的行?

我正在将.csv文件中的信息读取为

数据框
contacts = pd.read_csv('contacts.csv')
contacts_df = pd.DataFrame(contacts)

2 个答案:

答案 0 :(得分:0)

我想出了一些主意。请尝试:)

首先,我有一个功能正在检查您的状况:

def check(row):
    return f"{row['f_name'].lower()}.{row['l_name'].lower()}" in row['email']

这时,您只需要使用以下方法即可

df['is_correct'] = df.apply(check, axis=1)

输出:

出现问题时,您将得到以下信息:

email   f_name  l_name  is_correct
0   dawid.sielski@sth.com   Dawidd  Sielski False # double 'd' at the end of the name

一切正常后,它将看起来像这样:

    email   f_name  l_name  is_correct
0   dawid.sielski@sth.com   Dawid   Sielski True

答案 1 :(得分:0)

df['new'] = df2['f_name'].str.lower()+'.'+df2['l_name'].str.lower()
print(df.apply(lambda x: x['new'] in x['email'], axis=1))

这将为您提供一系列的对与错,可以告诉您电子邮件地址是否合适。