pandas字符串列按XX.XX.XX数字格式左对齐补全实现方法
pandas字符串列补全为三段式数字格式实现方案
核心逻辑:对目标字符串列按.拆分分段,先将每段末尾补0对齐到2位长度,再在分段列表末尾补00凑够3段,最后用.重新拼接即可。该方法基于pandas向量化接口实现,即使是百万行级别的大数据集也能快速跑完。
实现代码
首先构造测试数据验证逻辑:
import pandas as pd # 构造示例数据集 df = pd.DataFrame({ 'target_col': ['72.1', '61', '25.73.20', '33.12'] })
核心处理代码:
# 可选前置清洗:如果列里存在非数字、非小数点的乱码字符,先执行这步去除 df['target_col'] = df['target_col'].str.replace(r'[^\d.]', '', regex=True) df['formatted_col'] = ( df['target_col'] .str.split('.') # 按小数点拆分成分段列表 .apply(lambda seg_list: [seg.ljust(2, '0') for seg in seg_list]) # 现有每段补0到2位 .apply(lambda seg_list: seg_list + ['00'] * (3 - len(seg_list))) # 缺几段补几个'00' .str.join('.') # 用小数点重新拼接为字符串 )
结果验证
执行后打印df['formatted_col'],输出完全匹配目标格式:
0 72.10.00 1 61.00.00 2 25.73.20 3 33.12.00 Name: formatted_col, dtype: object
边界情况说明
- 如果某段原始长度超过2位(比如出现
123.4.5这类值),代码会保留原有长度不做截断,如果需要强制截断可以把ljust逻辑改成seg[:2].ljust(2, '0') - 如果原始值是空值/NaN,可以在处理前先填充为默认值(比如
0.0.0)避免报错
内容的提问来源于stack exchange,提问作者user3620915
相关产品推荐
相关产品推荐

