我有一列包含电话号码。它们通常采用
(555) 123-4567
格式,但有时它们的格式不同或者不是正确的数字。我正在尝试将此字段转换为仅包含数字,删除所有非数字字符(如果有 10 个数字)。
如何应用一个函数,如果该字段中有 10 个数字,则仅提取数字?
我尝试使用:
df['PHONE'] = df['PHONE'].str.extract('(\d+)', expand=False)
但这只是提取第一组数字(区号)。如何提取所有数字并且仅在字段中正好有 10 个数字时才运行此提取?
我的预期输出是
5551234567
想通了。我创建了一个应用于我的电话号码字段的函数
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)