python - 摆脱 Pandas DF 上的电话号码扩展
问题描述
我有许多不同格式的电话号码列表,但我需要提取典型的 10 位格式“区号 + 电话号码”。
我已成功删除标点符号,但一些讨厌的电话号码上有扩展名。我想我会创建一个长度列,然后有某种条件,如果电话号码长度大于 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}$', '')
我得到一个“'系列'对象是可变的,因此它们不能被散列”错误,但我不知道它是什么意思或如何解决它。有什么建议么?
解决方案
也许您可以将 slice 用作:
phone['PN'] = phone['PN'].str.slice(0, 10)
或者,
phone['PN'] = phone['PN'].str[:10]
推荐阅读
- ejabberd - Ejabberd Bosh 没有回应
元素 - python - 合并特定列上的重复行
- java - 通过 UDP 的 SocketAppender:可能吗?
- hadoop - Luigi 可以运行远程 Hadoop 作业吗?
- excel - 如何记录外部数据连接/查询刷新的时间?
- java - Spring Vault 客户端 - 无法连接到本地开发 Vault 服务器
- firebase - 读取具有规则限制的 firebase 实时数据库子集
- google-apps-script - 谷歌表格两个 onEdits,第二个 onEdit 与第一个冲突
- spring-boot - 如何在topredacte方法中使用jpa中的两个连接
- python - 蟒蛇。有什么方法可以获取文件对话框?