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

Pandas处理邮编列报invalid literal for int()错误 如何替换混合值为0

实现方案

针对1500万条的大数据量场景,优先使用pandas向量化操作避免遍历损耗,完整实现代码如下:

import pandas as pd

# 若需保留原逻辑的前向填充空值,可先执行下一行
# df['buyer_zip'] = df['buyer_zip'].ffill()

# 1. 把空值统一转为空字符串方便后续处理
df['buyer_zip'] = df['buyer_zip'].fillna('')
# 2. 移除所有横杠,拼接5+4格式邮编的前后段
df['buyer_zip'] = df['buyer_zip'].str.replace('-', '', regex=False)
# 3. 校验是否为纯数字,包含非数字的内容统一替换为0
df['buyer_zip'] = df['buyer_zip'].where(df['buyer_zip'].str.fullmatch(r'\d+', na=False), '0')
# 4. 转为整数类型
df['buyer_zip'] = df['buyer_zip'].astype(int)

逻辑说明

  • regex=False关闭正则匹配,大幅提升横杠替换的执行速度
  • str.fullmatch会校验整段字符串是否全为数字,只要包含字母、特殊符号就会匹配失败,直接替换为0
  • 所有操作均为向量化执行,1500万条数据可在秒级完成处理
  • 如需同步处理item_zip列,替换列名执行相同逻辑即可

处理后输出和预期完全一致:

buyer_zip
0      97219
1  114153528
2          0
3  907031234

内容的提问来源于stack exchange,提问作者Vasudha Pasumarthi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:36:03