如何在Pandas中删除含空格与无空格变体文本的行
高效过滤带空格/无空格变体文本的DataFrame行
核心思路
不用手动枚举所有带空格和无空格的文本变体,通过正则表达式的\s?(匹配0个或1个空白字符)统一匹配两种格式,大幅减少重复工作。
针对当前QR场景的解决方案
直接构造匹配QRCODE和QR CODE的正则模式,生成过滤掩码后删除对应行:
# 匹配QR后可选空格+CODE,case=False忽略大小写(按需开启) mask = df.Description.str.contains(r'QR\s?CODE', case=False) # 保留不匹配的行 df = df[~mask]
通用多场景解决方案
如果需要同时处理多种类似变体(如Wallmart/Wall mart、eBay/e Bay),可以批量定义模式并合并:
# 每个模式处理一组带/不带空格的变体 target_patterns = [ r'QR\s?CODE', r'Wall\s?mart', r'e\s?Bay' ] # 合并所有模式为一个正则表达式 combined_regex = '|'.join(target_patterns) # 生成过滤掩码 mask = df.Description.str.contains(combined_regex, case=False) # 过滤掉匹配的行 df = df[~mask]
模式调整说明
- 如果需要匹配多个空格(比如
QR CODE),把\s?换成\s*(匹配0个或任意多个空白字符) - 如果只想匹配单个空格,可以写成
?(注意空格加问号) case=False参数可按需关闭,用于严格匹配大小写的场景
内容的提问来源于stack exchange,提问作者HO-N
相关产品推荐
相关产品推荐

