【发布时间】:2017-11-19 09:02:04
【问题描述】:
我正在清理包含我要删除的欺诈性电子邮件地址的数据集。
我制定了多个规则来捕获重复和欺诈域。但是有一个场景,我想不出如何在 python 中编写规则来标记它们。
所以我有例如这样的规则:
#delete punction
df['email'].apply(lambda x:''.join([i for i in x if i not in string.punctuation]))
#flag yopmail
pattern = "yopmail"
match = df['email'].str.contains(pattern)
df['yopmail'] = np.where(match, 'Y', '0')
#flag duplicates
df['duplicate']=df.email.duplicated(keep=False)
这是我无法找出规则来捕捉它的数据。基本上我正在寻找一种方法来标记以相同方式开始但最后有连续数字的地址。
abc7020@gmail.com
abc7020.1@gmail.com
abc7020.10@gmail.com
abc7020.11@gmail.com
abc7020.12@gmail.com
abc7020.13@gmail.com
abc7020.14@gmail.com
abc7020.15@gmail.com
attn1@gmail.com
attn12@gmail.com
attn123@gmail.com
attn1234@gmail.com
attn12345@gmail.com
attn123456@gmail.com
attn1234567@gmail.com
attn12345678@gmail.com
【问题讨论】:
-
澄清一下 - 您希望将您提供的示例中的哪些电子邮件地址标记为欺诈?
-
所有这些例子都是欺诈
-
所以 abc@gmail.com 可以,但是像 abc1、abc12、.. 这样的东西会是欺诈性的吗?如果 abc@gmail.com 存在,这些只会是欺诈性的?
-
@jeangelj 什么是“yopmail”,它与数据有什么关系?
-
只允许来自白名单的电子邮件地址可能是值得的,需要验证以及阻止来自同一 IP 的多个注册。您可以整天编写正则表达式规则,但任何有啤酒和空闲时间的人都可以解决这个问题。
标签: python data-cleaning