我试图从数据帧中删除模糊匹配列表中的项的值。在
我有一个数据帧(test_df),看起来像:
id email created_at
0 1 son@mail_a.com 2017-01-21 18:19:00
1 2 boy@mail_b.com 2017-01-22 01:19:00
2 3 girl@mail_c.com 2017-01-22 01:19:00
我有一个几百个电子邮件域的列表,我正在从一个txt文件中读取这些域,它看起来像:
^{pr2}$我试图从数据框中删除包含匹配电子邮件域的任何行,方法是使用:
email_domains = open('file.txt', 'r')
to_drop = email_domains.read().splitlines()
dropped_df = test_df[~test_df['email'].isin(to_drop)]
print(test_df)
因此,结果应该是:
id email created_at
0 2 boy@mail_b.com 2017-01-22 01:19:00
1 3 girl@mail_c.com 2017-01-22 01:19:00
但第一排有“son@mail_a.com“没有掉下来。有什么建议吗?在
您可以使用
apply
和split
字符串,并将其用于isin
结果
^{pr2}$从电子邮件中解析域名非常容易,因此我们可以首先使用
.str.split('@')
解析域,然后使用isin()
方法进行检查:其中:
^{pr2}$isin
查找完全匹配的项。您的情况更适合endswith
或contains
:^{pr2}$
相关问题 更多 >
编程相关推荐