Pandas 提取电话号码(如果格式正确)

问题描述 投票:0回答:1

我有一列包含电话号码。它们通常采用

(555) 123-4567
格式,但有时它们的格式不同或者不是正确的数字。我正在尝试将此字段转换为仅包含数字,删除所有非数字字符(如果有 10 个数字)。

如何应用一个函数,如果该字段中有 10 个数字,则仅提取数字?

我尝试使用:

df['PHONE'] = df['PHONE'].str.extract('(\d+)', expand=False)

但这只是提取第一组数字(区号)。如何提取所有数字并且仅在字段中正好有 10 个数字时才运行此提取?

我的预期输出是

5551234567

python pandas dataframe text-extraction
1个回答
0
投票

想通了。我创建了一个应用于我的电话号码字段的函数

def extractNums(number):
    new_number = list(filter(str.isalnum, number))
    if len(new_number) == 10:
        return "".join(new_number)
    else:
        return number

df['PHONE'] = df['PHONE'].apply(extractNums)
© www.soinside.com 2019 - 2024. All rights reserved.