我有一个数据框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
我做错了什么?
答案 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]+
将匹配任何不是数字的东西,也就是删除的东西。