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

如何高效过滤DataFrame中字段值被包含在指定字符串的行?

高效筛选DataFrame中X列值为'foo'子串的行

给你两个高效的解决方案,比手动循环快得多:

方法一:使用apply(通用且简洁)

直接对X列应用lambda判断每个值是否是'foo'的子串,处理缺失值的版本:

import pandas as pd
df2 = df[df['X'].apply(lambda x: x in 'foo' if pd.notna(x) else False)]

如果X列没有缺失值,可简化为:

df2 = df[df['X'].apply(lambda x: x in 'foo')]

apply是批量列操作,底层经过优化,比逐行遍历的iterrows()快很多。

方法二:预生成子串集合+str.isin()(大数据量下更高效)

如果你的DataFrame行数极多,或者目标字符串(比如'foo')较长,先把目标字符串的所有非空子串存入集合,再用str.isin()查询(集合查询是O(1)复杂度,速度更快):

import itertools

target_str = 'foo'
# 生成所有非空子串
substring_set = set()
for l in range(1, len(target_str)+1):
    for i in range(len(target_str) - l + 1):
        substring_set.add(target_str[i:i+l])

# 筛选符合条件的行
df2 = df[df['X'].str.isin(substring_set, na=False)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:32:43