摆脱熊猫DF上的电话号码扩展

时间:2018-07-30 23:18:51

标签: python regex pandas indexing

我有许多不同格式的电话号码列表,但是我需要提取典型的10位数字格式的“区号+电话号码”。

我已成功删除标点符号,但某些讨厌的电话号码带有扩展名。我以为我会创建一个length列,然后有某种条件,如果电话号码长度大于10,则只能删除最后4个字符。

下面是我的数据的示例。第一个电话号码不应丢失任何数字;第二个应该输掉“ 1401”

phone = pd.DataFrame({'PN':['1234567891', '1234567891 1401'],'length':[10,16]})

我试图用re.sub代替最后四位数字,但是我似乎无法正确理解。

phone[phone['length']>10]= re.sub(r'\d{4}$', '', phone['PN'])

这也不起作用:

phone[phone['length']>10,'PN']=phone.loc[phone['length']>10]['PN'].str.replace('\d{4}$', '')

我得到一个“'系列'对象是可变的,因此它们不能被散列”的错误,但是我不知道这意味着什么或如何解决。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

也许您可以将slice用作:

phone['PN'] = phone['PN'].str.slice(0, 10)

phone['PN'] = phone['PN'].str[:10]