pandas使用loc实现无正则字符串部分匹配 解决精确匹配失效问题
实现方案
你当前代码无返回结果的原因是使用了精确等值匹配,仅会筛选出name字段完全等于Hello的行,无法命中包含该子串的长字符串。
要满足「通过loc完成不依赖正则的字符串部分匹配」的需求,可直接使用pandas字符串访问器提供的contains方法,通过regex=False参数关闭正则解析能力,实现纯子串包含判断。
修改后的完整代码
import pandas as pd data = {'name': ['HelloWorld', 'ByeWorld'], 'physics': [22, 33], 'chemistry': [44, 55]} a = pd.DataFrame(data) # 核心修改:传入regex=False,关闭正则匹配,做纯字符串包含判断 b = a.loc[a['name'].str.contains('Hello', regex=False)] print(b)
关键说明
- 必须显式指定
regex=False,否则contains方法默认会将传入的匹配串作为正则表达式解析,不符合不依赖正则的要求 - 该匹配默认大小写敏感,如果需要忽略大小写匹配,可额外传入
case=False参数,依然不会用到正则解析能力 - 生成的布尔筛选数组可以直接传入
.loc的行位置参数,完全兼容你原有的代码逻辑
内容的提问来源于stack exchange,提问作者filtertips
相关产品推荐
相关产品推荐

