如何在pandas的str.contains匹配逻辑中忽略大小写敏感性
你只需要在str.contains()方法中添加case=False参数即可,该参数默认值为True(开启大小写敏感),设置为False后就会忽略大小写执行子串匹配。
另外你的代码中存在一个小问题:导入numpy时没有起别名np,后续调用np.select会触发名称报错,可以同步修正导入语句。
修改后的完整代码
import pandas as pd import numpy as np data = ['Condor', 'Marmot', 'Bear', 'Condor a', 'Marmotb', 'Bearxyz'] df = pd.DataFrame(data, columns=["item_name"]) animal_list = ['Condor', 'Marmot', 'Bear', 'Pika', 'Rat', 'Racoon', 'Opossum'] # 核心修改:添加case=False忽略大小写 cond_list = [df["item_name"].str.contains(animal, case=False) for animal in animal_list] df["animal"] = np.select(cond_list, animal_list)
如果你需要同时搭配其他正则规则,也可以通过传入正则flag实现同样效果,需要先导入re模块:
import re cond_list = [df["item_name"].str.contains(animal, flags=re.IGNORECASE) for animal in animal_list]
内容的提问来源于stack exchange,提问作者doubledribble
相关产品推荐
相关产品推荐

