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

如何高效筛选Pandas DataFrame中值为指定子串的列

高效筛选Pandas DataFrame:子串匹配优化方案

先明确示例的正确数据构造方式:

import pandas as pd

df = pd.DataFrame([['a', 'b', 'c'], ['hello', 'bye', 'hello']])
reference_str = "hello there"

你需要筛选第一行中,对应第二行字符串是reference_str子串的元素。相比正则遍历,以下是更高效的实现方式:

方法1:矢量化成员检查(最优)

利用Python原生in关键字做子串判断,结合Pandas布尔索引实现。原生子串检查是C级别的底层实现,开销远低于正则引擎,速度优势明显:

# 生成布尔掩码:检查第二行每个元素是否是参考字符串的子串
mask = df.loc[1].apply(lambda x: x in reference_str)
# 用掩码筛选第一行的目标元素
output = df.loc[0, mask].tolist()
# 输出结果:['a', 'c']

方法2:列表推导式(适合小数据集)

如果数据集规模较小,用列表推导式代码更简洁,执行效率也不错:

# 按列遍历,判断第二行元素是否在参考字符串中,保留对应第一行元素
output = [df.loc[0, col] for col in df.columns if df.loc[1, col] in reference_str]

为什么比正则高效?

正则表达式需要启动正则引擎完成模式编译与匹配,而原生in操作直接调用高效的字符串匹配算法(如Boyer-Moore),在绝大多数子串匹配场景下,速度是正则的数倍甚至数十倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:11:02