我正在尝试清理一些数据。我有两个字段,称为
Phone
和 Ext
。 Phone
具有空白值或格式为:
Ext
大部分为空,但有时会具有类似“x1234”或“1234”的值
我使用以下代码在
x
上进行拆分并拉出第一个元素:
df['Phone'] = df['Phone'].str.split(' x').str[0]
这可以仅提取电话 # 部分,但如果我执行 .str[1] 来提取任何潜在的扩展名,我会收到错误,因为很多行没有
x_________
字段。
有没有办法从电话 # 中提取分机号(如果存在)并将其移动到
Ext
字段并清理 Phone
字段?
您可以将
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])