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

如何移除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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:22:01