删除所有包含无效电子邮件的记录。 Pandas

Delete all records with invalid email. Pandas

如何删除 Pandas Dataframe 中包含无效电子邮件(没有名称、域、at 符号)的所有记录

我的代码如下:

import re
regex = '^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'  

def validate_email(email):
    return re.search(regex, email)

all_data = all_data.loc[all_data['Email'].apply(validate_email)]

但我有错误:

KeyError: "None of [Index([                                                       None,\n                                                              None,\n                                                              None,\n                                                              None,\n                                                              None,\n         <re.Match object; span=(0, 16), match='adam@example.com'>,\n                                         

如何正确操作??

如果您稍微更改验证函数,您的代码就可以工作

regex = '^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'  

def validate_email(email):
    if re.search(regex, email):
        return True
    return False

all_data = all_data.loc[all_data['Email'].apply(validate_email)]

首先,您需要在正则表达式之前使用 r 才能使转义字符起作用。

regex = r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'  

然后,你可以简单地使用str.contains方法。

all_data = all_data[all_data['Email'].str.contains(regex)]