如何移除DataFrame中同时包含A和B字符的行?
高效筛选不同时包含A和B的DataFrame行
示例数据构造
先构建符合描述的DataFrame:
import pandas as pd df = pd.DataFrame({ 'seq': [ 'AAAABBB', 'ACBCDAB', 'AACCADD', 'ACDCACC', 'ABAABBC', 'BCBBDCB' ] })
核心筛选方法
这里提供两种无需拆分字符串的高效矢量化方案,性能远优于str_split_fix的处理方式:
方案1:逻辑组合检查
利用pandas矢量化字符串方法,直接判断每行是否同时包含A和B,取反后保留目标行:
# 筛选不同时包含A和B的行 result_df = df[~(df['seq'].str.contains('A') & df['seq'].str.contains('B'))]
方案2:正则正向预查
用正则正向预查一次性匹配同时存在A和B的字符串,取反后得到结果:
# 匹配同时含A和B的行,取反筛选目标数据 result_df = df[~df['seq'].str.contains('(?=.*A)(?=.*B)')]
结果验证
运行上述代码后,result_df的输出为:
seq 2 AACCADD 3 ACDCACC 5 BCBBDCB
效率说明
这两种方法均基于pandas的矢量化操作,避免了拆分字符串后逐元素检查的额外开销。在数据量较大时,性能会比str_split_fix的方法提升显著——矢量化处理是pandas批量数据操作的最优实践之一。
内容的提问来源于stack exchange,提问作者Tommy Cassilly
相关产品推荐
相关产品推荐

