如何用pandas中的另一个字符串替换部分电子邮件地址?

时间:2017-09-15 14:28:52

标签: python string pandas dataframe replace

我有一个包含电子邮件地址的数据框。我需要用' .mn'替换每个电子邮件地址的结尾。结尾的意思是' .org',' .com'等。

Ex. John@smith.com becomes John@smith.mn

不确定我做错了什么。

这是我到目前为止所做的,但这不是替换或给我一个错误信息:

email['ADDR'] = email['ADDR'].str.replace(r'[.]{2,}', '.mn')

提前谢谢你。

2 个答案:

答案 0 :(得分:4)

这应该做:

email['ADDR'] = email['ADDR'].str.replace('.{3}$', 'mn')

如果您需要处理可变长度域(.edu.com1等),您可以使用:

email

             ADDR
0  john@smith.com
1    test@abc.edu
2    foo@bar.abcd

email['ADDR'].str.replace('\..{2,}$', '.mn')

0    john@smith.mn
1      test@abc.mn
2       foo@bar.mn
Name: ADDR, dtype: object

答案 1 :(得分:2)

另一种处理可变长度顶级结尾的方法是使用str.rsplit

In[72]:
df = pd.DataFrame({'email':['John@smith.com','John@smith.x','John@smith.hello']})
df

Out[72]: 
              email
0    John@smith.com
1      John@smith.x
2  John@smith.hello

In[73]:
df['email'] = df['email'].str.rsplit('.').str[0] +'.mn'
df

Out[73]: 
           email
0  John@smith.mn
1  John@smith.mn
2  John@smith.mn

这将找到最后一个尾随点,左侧并附加新的所需后缀