我有一个这样的文件:
george@mail.com|george|Sutherland|Manchester|England
marcel@email.com|Marcel|ZIDANE|Marseille|France
some@gmail.com|Simon|surname|Somewhere|Else
以及电子邮件列表:
ty230923@hotmail.com
marcel@email.com
email@anothermail.com
我想从文件1的所有行中删除所有包含在文件2的第一列中的电子邮件的行。预期输出如下:
george@mail.com|george|Sutherland|Manchester|England
some@gmail.com|Simon|surname|Somewhere|Else
我需要一个可以大规模使用的解决方案(1亿条线路)。尝试了grep解决方案,但经过数小时的运行仍然没有结果。有人建议AWK可能是要走的路。
在此先感谢您的帮助。
答案 0 :(得分:0)
在Python中,您可以将pandas库与merge函数一起使用以获得所需的内容。使用熊猫缩放比例应该没有任何问题。
这是解决问题的方法:
import pandas
In [1] : df = pd.DataFrame({'e-mail': ['a@hotmail.fr', 'b@hotmail.fr', 'c@hotmail.fr'], "Name": ['Bob', 'Alice', 'Britney']})
Out[1] :
Name e-mail
0 Bob a@hotmail.fr
1 Alice b@hotmail.fr
2 Britney c@hotmail.fr
In [2] : df2 = pd.DataFrame({'e-mail' : ['a@hotmail.fr', 'd@hotmail.fr']})
Out[2] :
e-mail
0 a@hotmail.fr
1 d@hotmail.fr
In [3] : df_ final = df.merge(df2, indicator='i', how='outer').query('i == "left_only"').drop('i', 1)
In [4]: df_final.head()
Out[4]:
Name e-mail
1 Alice b@hotmail.fr
2 Britney c@hotmail.fr