从电话号码的数据框列中删除特殊字符

时间:2017-11-24 07:59:17

标签: python string pandas replace

我有一个数据框df

Name    phone_number    status
john    8967894567      FC
john    8967894567      FC
john    7846897345      CL 
john    78.478954+89    FC
john    78.478954+89    FC
Ram     4598761458      FC
Ram     4598761458      FC
Kevin   15.478945+67    CL

我想更改它以获得以下结果:

Name    phone_number    status
john    8967894567      FC
john    8967894567      FC
john    7846897345      CL 
john    7847895489      FC
john    7847895489      FC
Ram     4598761458      FC
Ram     4598761458      FC
Kevin   1547894567      CL

我试图像这样使用re.sub

import re
df['phone_number'] = re.sub('[.+]', '', df['phone_number'])

但结果是:

Name    phone_number             status
john    0  0 8967894567\n1  1547894567  FC
john    0  0 8967894567\n1  1547894567  FC
john    0  0 7846897345\n1  1547894567  CL 
john    0  0 7847895489\n1   1547894567  FC
john    0  0 7847895489\n1   1547894567  FC
Ram     0  0 4598761458\n1  1547894567  FC
Ram     0  0 4598761458\n1  1547894567  FC
Kevin   0  0 1547894567\n1  1547894567  CL

我做错了什么?

1 个答案:

答案 0 :(得分:3)

不要使用re.sub,它不适合使用数据框。请改用str.replace

df.phone_number = df.phone_number.str.replace('[^\d]+', '')
df

    Name phone_number status
0   john   8967894567     FC
1   john   8967894567     FC
2   john   7846897345     CL
3   john   7847895489     FC
4   john   7847895489     FC
5    Ram   4598761458     FC
6    Ram   4598761458     FC
7  Kevin   1547894567     CL

模式[^\d]+将匹配任何不是数字的东西,也就是删除的东西。