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

如何在Python Pandas DataFrame中筛选包含所有指定子串的列值?

如何在Pandas DataFrame中保留包含指定列表所有子串的列值?

需求说明

筛选DataFrame中某一列(示例为value_1)同时包含指定列表所有子串的行,比如示例要求value_1必须同时包含'a'和'on'两个子串。

示例数据

import pandas as pd

df = pd.DataFrame(
    [
    [1, 'foollish', 'molish'], 
    [2, 'barnylishon', 'chacha'], 
    [3, 'bazon', 'gazon'],
    ], 
    columns=['id', 'value_1', 'value_2'])

search_list = ['a','on']

解决方案

方法1:apply结合all逐行检查

通过apply遍历目标列的每个字符串,检查是否包含所有子串,生成布尔掩码后筛选行:

# 生成布尔掩码:验证每个value_1元素是否包含search_list中所有子串
mask = df['value_1'].apply(lambda x: all(sub in x for sub in search_list))
# 筛选符合条件的行
df_result = df[mask]
print(df_result)

方法2:正则正向预查匹配

构建包含所有子串的正则表达式(正向预查语法),通过str.contains批量匹配:

import re
# 构建正则规则:自动转义子串中的特殊字符,生成多条件正向预查
pattern = ''.join([f'(?=.*{re.escape(sub)})' for sub in search_list])
# 匹配所有符合条件的行
mask = df['value_1'].str.contains(pattern, regex=True)
df_result = df[mask]
print(df_result)

运行结果

两种方法均会输出期望结果:

id       value_1 value_2
1   2  barnylishon  chacha
2   3        bazon   gazon

内容的提问来源于stack exchange,提问作者Константин Прудников

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:10:19