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
相关产品推荐
相关产品推荐

