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

如何用Pandas保留小数点和短横线清理数值列冗余字符

清理带冗余字符的Pandas数值列(保留小数点和短横线)

实现步骤

通过正则表达式精准保留所需字符、剔除冗余内容,具体操作如下:

  1. 创建示例数据
import pandas as pd

# 模拟原始数据
size_list = ["10 OZ" , "20 OZ", "2.5. OZ" , "#30.1 OZ", "!2 O Z" , "1-8 OZ", "1-7OZ", "20 OZ"]
df = pd.DataFrame({"SIZE": size_list})
  1. 分步清理数据
# 第一步:仅保留数字、小数点(.)和短横线(-),删除所有其他冗余字符
df['cleaned_SIZE'] = df['SIZE'].str.replace(r'[^0-9.-]', '', regex=True)

# 第二步:修复异常小数点格式
# 移除字符串末尾的无效小数点
df['cleaned_SIZE'] = df['cleaned_SIZE'].str.replace(r'\.$', '', regex=True)
# 将连续多个小数点替换为单个
df['cleaned_SIZE'] = df['cleaned_SIZE'].str.replace(r'\.{2,}', '.', regex=True)

# (可选)处理极端情况:清理后只剩小数点/短横线的空值
df['cleaned_SIZE'] = df['cleaned_SIZE'].replace(r'^[-.]+$', '', regex=True)

清理结果

执行后cleaned_SIZE列的输出为:
["10", "20", "2.5", "30.1", "2", "1-8", "1-7", "20"],完全匹配目标要求。

正则说明

  • [^0-9.-]:匹配所有非数字、非小数点、非短横线的字符,直接删除
  • \.$:精准匹配字符串末尾的小数点,避免误删中间的有效小数点
  • \.{2,}:匹配2个及以上连续的小数点,替换为单个,修复类似2.5.这类错误格式

该方法为向量化操作,处理600条数据效率极高,无需循环遍历。

内容的提问来源于stack exchange,提问作者Syed Muzammil Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:21:59