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

pandas中如何为.str.contains方法添加多个待匹配字符串?

解决方案

方案1:利用str.contains原生正则OR语法

pandas的str.contains方法默认支持正则表达式,你可以用|符号拼接多个待匹配的子串,单次调用就能实现多字符串匹配,不需要重复写多行匹配逻辑。
你示例中的需求可以直接修改为:

# m1同时匹配aaa、bbb、ggg
m1 = NewDataFrame['Group'].str.contains("aaa|bbb|ggg", na=False)
# m2同时匹配ccc、fff
m2 = NewDataFrame['Group'].str.contains("ccc|fff", na=False)

如果待匹配的字符串包含.、*、?这类正则特殊字符,建议先做转义处理避免匹配逻辑出错,也可以把关键词单独抽成列表方便后续维护:

import re
# 单独维护匹配关键词列表,修改不需要动匹配逻辑
m1_keys = ["aaa", "bbb", "ggg"]
m2_keys = ["ccc", "fff"]
# 转义特殊字符后拼接正则规则
pattern1 = "|".join(re.escape(k) for k in m1_keys)
pattern2 = "|".join(re.escape(k) for k in m2_keys)

m1 = NewDataFrame['Group'].str.contains(pattern1, na=False)
m2 = NewDataFrame['Group'].str.contains(pattern2, na=False)

方案2:全匹配场景用isin方法

如果你的需求是精确匹配整个单元格的完整内容,不需要模糊匹配子串,用isin方法性能更高、写法更简洁:

m1 = NewDataFrame['Group'].isin(["aaa", "bbb", "ggg"])
m2 = NewDataFrame['Group'].isin(["ccc", "fff"])

修改后完整可运行代码示例

import pandas as pd
import re

NewDataFrame = pd.DataFrame({'Group':['aaa','bbb','ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh'],
                                  'N':[1,2,3,4,5,6,7,8]})


def highlight_cells(x):
    c2 = 'background-color: #00FF00'
    c1 = 'background-color: red'
    c = 'background-color: white'

    # 仅修改以下两个列表即可调整匹配规则,无需新增匹配代码行
    m1_keys = ["aaa", "bbb", "ggg"]
    m2_keys = ["ccc", "fff"]
    pattern1 = "|".join(re.escape(k) for k in m1_keys)
    pattern2 = "|".join(re.escape(k) for k in m2_keys)

    m1 = NewDataFrame['Group'].str.contains(pattern1, na=False)
    m2 = NewDataFrame['Group'].str.contains(pattern2, na=False)
    
    colordata = pd.DataFrame(c, index=x.index, columns=x.columns)
    colordata.loc[m1, 'Group'] = c1
    colordata.loc[m2, 'Group'] = c2
    return colordata

# 修正原代码变量名错误,原StartingDataFrame对应实际定义的NewDataFrame
end = NewDataFrame.style.apply(highlight_cells,axis=None)

end

内容的提问来源于stack exchange,提问作者project.py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:06:00