Python中避免rstrip('.0')误删小数点前0,实现指定数值格式转换
解决方案
直接用矢量化正则替换实现精准匹配,避免模糊删除导致的错误,同时保证处理大数据的效率:
fileA = fileA.apply(lambda col: col.str.replace(r'^0\.0$', '0').str.replace(r'^[1-9]\.0$', '', regex=True)).fillna('')
代码说明
^0\.0$:精准匹配完整字符串0.0,替换为0^[1-9]\.0$:精准匹配1-9开头、末尾为.0的完整字符串(如1.0、9.0),替换为空字符串''- 链式调用
str.replace是pandas矢量化操作,比循环或模糊的rstrip效率高得多,适合超大数据量场景 - 最后用
fillna('')统一处理空值,和原逻辑保持一致
原代码问题分析
你之前用的str.rstrip('.0')是模糊删除字符串右侧所有属于.0字符集的字符,而非精准匹配末尾的.0:
- 比如
10.0会被处理成1(右侧的0和.被全部删除,连小数点前的0也被误删) 0.0会被完全删除成空字符串,不符合你要保留0的需求
内容的提问来源于stack exchange,提问作者user21966536
相关产品推荐
相关产品推荐

