Python使用正则查找DataFrame中含连续重复字符字段的问题
问题根因
str.findall()的作用是返回所有匹配结果组成的列表,无匹配时返回空列表,本身不会输出布尔值,不符合你生成TRUE/FALSE列的需求- 你写的正则没有加原始字符串前缀
r,Python字符串中的反斜杠会被识别为转义符,导致正则匹配逻辑失效,最终返回空结果
正确实现代码
直接使用str.contains()方法判断是否存在匹配即可,正则可以简化为匹配连续两个相同字符的r'(\w)\1':
df['repeat'] = df['Name'].str.contains(r'(\w)\1', na=False)
参数na=False可将空值的匹配结果默认设为FALSE,避免生成NaN值,不需要可删除。
可选优化项
- 如果你需要仅匹配英文字母(默认
\w会匹配数字、下划线),可以将正则调整为r'([a-zA-Z])\1' - 如果你需要忽略大小写匹配(比如
Aa也判定为连续重复),可以添加case=False参数:
df['repeat'] = df['Name'].str.contains(r'([a-zA-Z])\1', na=False, case=False)
内容的提问来源于stack exchange,提问作者maris
相关产品推荐
相关产品推荐

