提取电话分机号码(如果存在)

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

我正在尝试清理一些数据。我有两个字段,称为

Phone
Ext
Phone
具有空白值或格式为:

  • (800)555-9876
  • (800) 555-1234 x__________
  • (800) 555-1234 x0123______

Ext
大部分为空,但有时会具有类似“x1234”或“1234”的值

我使用以下代码在

 x
上进行拆分并拉出第一个元素:

df['Phone'] = df['Phone'].str.split(' x').str[0]

这可以仅提取电话 # 部分,但如果我执行 .str[1] 来提取任何潜在的扩展名,我会收到错误,因为很多行没有

 x_________
字段。

有没有办法从电话 # 中提取分机号(如果存在)并将其移动到

Ext
字段并清理
Phone
字段?

pandas dataframe
1个回答
0
投票

您可以将

str.extract
与简短的正则表达式一起使用:

df[['Phone', 'Ext']] = df['Phone'].str.extract(r'^(.*?)(?: (x.*))?$')

split
+
reindex
:

df[['Phone', 'Ext']] = df['Phone'].str.split(r' (?=x)', n=1, expand=True).reindex(columns=[0,1])
© www.soinside.com 2019 - 2024. All rights reserved.