我正在尝试从以下数据框中提取多个域名:
email
0 test1@gmail1.com; test1@gmail2.com
1 test3@gmail3.com; test4@gmail4.com
2 test5@gmail5.com
我可以使用以下代码拆分并提取第一个电子邮件地址:
orig = []
mylist = []
for i in df['email']:
orig.append(i)
i = i[ i.find("@") : ]
i = i.split(";")
i = ';'.join(i)
mylist.append(i)
将列表附加到数据框后,我得到以下结果:
origemail newemail
0 test1@gmail1.com; test1@gmail2.com @gmail1.com; test1@gmail2.com
1 test3@gmail3.com; test4@gmail4.com @gmail3.com; test4@gmail4.com
2 test5@gmail5.com @gmail5.com
我追求的结果: (这些电子邮件地址可能不限于两个,也可能会更多。)
origemail newemail
0 test1@gmail1.com; test1@gmail2.com @gmail1.com; @gmail2.com
1 test3@gmail3.com; test4@gmail4.com @gmail3.com; @gmail4.com
2 test5@gmail5.com @gmail5.com
有人可以指出正确的方向以实现所需的输出吗?预先感谢。
答案 0 :(得分:2)
类似的事情应该起作用:
orig = []
mylist = []
for i in df['email']:
orig.append(i)
emails = i.strip().split(';')
domains = [x[x.find('@'):] for x in emails]
if len(domains) == 1:
domain_string = domains
else:
domain_string = '; '.join(domains)
mylist.append(domain_string)
它(1)遍历所有电子邮件,(2)首先将它们附加到orig
,(3)找到域,然后(4)连接它们并将它们附加到mylist
。 / p>
答案 1 :(得分:0)
您的代码的for循环需要像这样重构:
希望此伪代码可以提供帮助。