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

如何基于列表迭代使用Series.str.contains实现AND条件判断

动态生成Pandas Series多字符串包含检查条件

问题场景

给定Pandas Series:

import pandas as pd
series = pd.Series(['ABC', 'AAABBB', 'BBBCCSSS', 'AABBCC'])

手动检查每个字符串是否同时包含A、B、C的代码是:

x = (series.str.contains('A')) & (series.str.contains('B')) & (series.str.contains('C'))

需求:通过动态列表(如items = ['A', 'B', 'C']或items = ['D', 'E', 'F', 'G'])自动生成上述布尔条件x,无需手动拼接每个contains语句。

解决方案

方法1:用DataFrame+all()批量判断

把每个字符的检查结果转成DataFrame,再逐行判断是否全部满足:

items = ['A', 'B', 'C']
# 生成每个字符对应的布尔Series,转成DataFrame后转置,每行对应原Series的一个元素
x = pd.DataFrame([series.str.contains(item) for item in items]).T.all(axis=1)

运行后x的结果和手动拼接的完全一致,且支持任意长度的items列表。

方法2:用reduce累积逻辑与操作

借助functools.reduce把多个布尔Series依次做逻辑与,模拟手动拼接&的过程:

from functools import reduce

items = ['A', 'B', 'C']
# 初始值设为全True的Series,依次和每个字符的检查结果做逻辑与
x = reduce(lambda acc, char: acc & series.str.contains(char), items, pd.Series([True]*len(series)))

这种方法无需转DataFrame,直接在Series层面操作,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:55:09