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

如何在Pandas含文本值的字符串列中移除'.0'后缀?

解决Pandas字符串列移除.0后缀的问题

原始数据

Store NumberCount
1.0121
2.085
3.032
ABC89
BCD94
CDE4

目标效果

Store NumberCount
1121
285
332
ABC89
BCD94
CDE4

试过的无效代码

  • df = df['Store Number'].replace('.0','')
  • df = df['Store Number'].replace('.\d0','')

问题原因

  1. 第一种写法是普通字符串替换,会替换所有位置的.0子串,且赋值逻辑错误——应该直接修改原DataFrame的列,而非把单列赋值给整个df。
  2. 第二种写法的正则表达式存在两处问题:\d在字符串中需转义为\\d,且未添加regex=True参数,Pandas默认是全字符串匹配,导致正则规则不生效。

正确解决方法

方法一:正则精准替换(推荐)

利用str.replace配合正则,只匹配并替换字符串结尾的.0:

df['Store Number'] = df['Store Number'].str.replace(r'\.0$', '', regex=True)
  • r'\.0$':\.匹配点号(避免被当作通配符),0匹配数字0,$限定仅匹配字符串结尾的.0,不会干扰其他内容。
  • regex=True:明确开启正则匹配模式。

方法二:类型转换法

如果所有带.0的字符串都是整数形式,可通过类型转换实现清理,同时保留非数值字符串:

def clean_store(s):
    try:
        return str(int(float(s)))
    except ValueError:
        return s

df['Store Number'] = df['Store Number'].apply(clean_store)

该方法兼容性更强,哪怕遇到'123.0'这类长数字也能处理,非数值内容会原样保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:06:28