【问题标题】:Removing special characters from a dataframe column of phone numbers从电话号码的数据框列中删除特殊字符
【发布时间】:2018-05-08 04:49:52
【问题描述】:

我有一个数据框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

我做错了什么?

【问题讨论】:

    标签: python string pandas replace


    【解决方案1】:

    不要使用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]+ 将匹配任何不是数字的东西,并且这就是被删除的东西。

    【讨论】:

    • 这对我有帮助,你能推荐任何页面或教程来在这种情况下清理 python 中的数据吗?
    • @danishxr 对不起……除了官方文档我真的什么都不知道:pandas.pydata.org/pandas-docs/stable/…
    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2023-03-25
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多