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

Pandas中str.fullmatch匹配含括号内容失效,如何解决?

问题描述

现有如下结构的DataFrame:

name         | injury
Kevin Durant   Torn Achilles (out for season)

尝试用以下代码匹配指定姓名和伤病的行:

df[df['name'].str.fullmatch('Kevin Durant') & df['injury'].str.fullmatch('Torn Achilles (out for season)')]

但返回空DataFrame,而非预期的目标行。

若去掉(out for season)部分并将fullmatch改为contains,则能得到预期结果:

df[df['name'].str.fullmatch('Kevin Durant') & df['injury'].str.contains('Torn Achilles')]

推测是(out for season)中的括号导致fullmatch无法正常工作,寻求解决办法。

解决建议

问题根源在于str.fullmatch()默认会将传入的字符串当作正则表达式处理,而括号()在正则里是分组的特殊语法,不是字面字符,所以无法匹配DataFrame里的括号内容。可以用以下两种方法解决:

  • 方法1:关闭正则匹配,按字面匹配字符串
    给str.fullmatch()加上regex=False参数,让函数直接按原始字符串内容匹配,不再解析正则特殊字符:

    df[df['name'].str.fullmatch('Kevin Durant') & df['injury'].str.fullmatch('Torn Achilles (out for season)', regex=False)]
    
  • 方法2:转义正则特殊字符
    如果需要保留正则匹配的特性,可以手动把括号转义成\(和\),或者用re.escape()自动转义所有正则特殊字符:

    import re
    injury_pattern = re.escape('Torn Achilles (out for season)')
    df[df['name'].str.fullmatch('Kevin Durant') & df['injury'].str.fullmatch(injury_pattern)]
    

内容的提问来源于stack exchange,提问作者Malice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:25:22