取消手机号码分机

2024-04-15 20:52:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我成功地删除了标点符号,但有些讨厌的电话号码上有分机。我想我应该创建一个长度列,然后有一些条件,只有删除最后4个字符,如果电话号码长度大于10。你知道吗

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

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

我试着用回复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}$', '')

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


Tags: 数据示例列表格式phone电话号码数字条件