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

如何通过判断列是否包含列表中任一字符串筛选Pandas DataFrame

筛选包含指定任一字符串的DataFrame行

方法1:正则匹配(高效简洁)

利用str.contains结合正则匹配,是处理这类需求最常用的方法:

import pandas as pd

# 构造示例数据
data = pd.DataFrame({
    'ID': [0, 1, 2, 3],
    'Names': ["'NameA NameB'", "'NameB'", "'NameB NameC'", "'NameC'"]
})
target_names = ['NameA', 'NameC']

# 拼接正则匹配模式
match_pattern = '|'.join(target_names)
# 筛选包含任一目标名称的行
filtered_data = data[data['Names'].str.contains(match_pattern)]

执行后filtered_data将保留ID为0、2、3的行,移除ID=1的行。

方法2:逐行检查(直观易懂)

通过apply遍历每行,用any()判断是否存在目标名称:

filtered_data = data[data['Names'].apply(lambda row: any(name in row for name in target_names))]

这种方法逻辑直白,适合数据量不大的场景,无需了解正则语法。

方法3:精准匹配(避免部分匹配)

如果需要严格匹配完整名称(比如防止NameAA被误判为包含NameA),可以先拆分字段再做集合交集检查:

# 去除字符串两端的单引号,按空格拆分名称
split_names = data['Names'].str.strip("'").str.split()
# 检查拆分后的名称列表与目标列表是否有交集
filtered_data = data[split_names.apply(lambda x: bool(set(x) & set(target_names)))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:40:50