You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理中间带空格的电话号码时被转为0的问题如何解决?

问题原因

  • 你的正则替换逻辑存在错误:r'[^\w\s]=+' 仅能匹配末尾带=的字符,完全没有处理手机号中间的空格,处理后的值仍然是带空格的字符串
  • pd.to_numeric无法解析带空格的字符串,会触发errors="coerce"规则返回NaN,后续fillna(0)就直接把这些值替换成了0
  • 末尾多余的to_frame()会把单列Series转成DataFrame,赋值给df['Phone_Number']这个Series字段时也可能引发格式异常

修复方案

如果不需要保留手机号开头的0,可以使用以下代码:

import pandas as pd

# 先删除所有非数字字符,覆盖空格、横杠等常见手机号分隔符
df['Phone_Number'] = df['Phone_Number'].str.replace(r'\D', '', regex=True)
df['Phone_Number'] = pd.to_numeric(df['Phone_Number'], errors="coerce").fillna(0).astype('int64')

如果需要保留手机号开头的0,建议直接存储为字符串格式,不需要转数值:

import pandas as pd

# 仅删除不需要的特殊字符,保留数字后直接存为字符串即可
df['Phone_Number'] = df['Phone_Number'].str.replace(r'\D', '', regex=True).fillna('')

内容的提问来源于stack exchange,提问作者Mizanur Choudhury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:36:01