You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Python Pandas中格式化字符串数字:去除前导零

解决Pandas去除字符串列前导零的问题

嘿,我懂你遇到的困扰啦——之前用链式索引赋值没生效对吧?这是因为Pandas里连续用两个方括号的链式索引,大概率返回的是原DataFrame的副本而非视图,你修改的只是副本,原数据根本没变化。

给你几个靠谱的解决方案,按简洁程度排序:

方法一:转整数再转回字符串(最省心)

这种方法利用整数自动去除前导零的特性,一步到位,还能完美处理全零的情况(比如'000'会变成'0'):

df_ZIPCOUNTY_CA['county code'] = df_ZIPCOUNTY_CA['county code'].astype(int).astype(str)

方法二:用字符串方法直接去前导零

如果不想转换数据类型,可以用str.lstrip()直接去掉开头的'0',记得补上全零变空字符串的处理:

# 去除前导零
df_ZIPCOUNTY_CA['county code'] = df_ZIPCOUNTY_CA['county code'].str.lstrip('0')
# 把全零处理后产生的空字符串替换回'0'
df_ZIPCOUNTY_CA['county code'] = df_ZIPCOUNTY_CA['county code'].replace('', '0')

方法三:用.loc精准修改指定行

要是你只想修改那些以'0'开头的行,用.loc可以彻底避免链式索引的坑,确保修改的是原DataFrame:

# 先筛选出需要修改的行
mask = df_ZIPCOUNTY_CA['county code'].str.startswith('0')
# 用.loc安全赋值
df_ZIPCOUNTY_CA.loc[mask, 'county code'] = df_ZIPCOUNTY_CA.loc[mask, 'county code'].str.lstrip('0')

之前你的代码没生效,核心问题就是链式索引的写法——别再用df[条件][列名] = ...这种方式啦,Pandas官方也不推荐,很容易踩修改无效的坑。

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

火山引擎 最新活动