给定一个包含电子邮件的数据框,我想要过滤掉包含潜在被屏蔽域名或明显欺诈邮件的行。下面的数据框代表我的数据示例。
>> print(df)
email number
1 fake@fake.com 2
2 real.email@gmail.com 1
3 no.email@email.com 5
4 real@yahoo.com 2
5 rich@money.com 1
我想通过两个列表进行过滤。第一个列表是fake_lst = ['noemail', 'noaddress', 'fake', ... 'no.email']
。
第二个列表只是将disposable_email_domains import blocklist
转换为列表(或保留为集合)。
当我使用df = df [~ df ['email'] .str.contains('noemail')]
时,它可以正常工作并过滤掉该条目。但是当我执行df = df [~ df ['email'] .str.contains(fake_lst)]
时,会出现类型错误:不可哈希类型:'list'
。
明显的答案是像许多其他stackoverflow问题一样使用df = df [~ df ['email'] .isin(fake_lst)]
,比如Filter Pandas Dataframe based on List of substrings或pandas filtering using isin function,但这最终没有任何影响。
我想对此数据帧进行过滤,基于两个列表中包含的子字符串,使得任何包含特定子字符串的电子邮件都被去除,并且包含它的后续行也被删除。
在上面的示例中,过滤后的数据框将是:
>> print(df)
email number
2 real.email@gmail.com 1
4 real@yahoo.com 2
5 rich@money.com 1