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

pandas实现字符串列去前导零并替换空值为0 需使用向量化操作

你可以直接用pandas内置的向量化字符串方法+空值填充实现需求,全程无循环,处理大规模数据的效率远高于逐行遍历。

完整实现代码

import pandas as pd
nums = {'amount': ['0324','S123','0010', None, '0030', 'SA40', 'SA24']}
df = pd.DataFrame(nums)

# 核心处理逻辑
df['amount'] = df['amount'].fillna('0').str.lstrip('0').replace('', '0')

如果需要把纯数字的结果转为整数类型,可以追加一行:

df['amount'] = pd.to_numeric(df['amount'], errors='ignore')

处理后结果

df['amount']的输出如下:

0     324
1    S123
2      10
3       0
4      30
5    SA40
6    SA24
Name: amount, dtype: object

逻辑说明

  • 先调用fillna('0')把所有None空值替换为字符串'0',避免后续字符串处理方法对空值报错
  • 再用str.lstrip('0')批量移除所有字符串左侧的前导零,这是pandas原生的向量化操作,底层用C实现,速度远快于Python层的循环
  • 最后加replace('', '0')是兼容全零字符串的场景:比如原值为'0000'时,lstrip('0')会得到空字符串,这一步可以把空字符串回退为'0'
  • pd.to_numeric设置errors='ignore'时,只会把纯数字的字符串转为数值类型,带字母的字符串会保留原样,符合示例数据的特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:54:02