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

Pandas DataFrame如何按照子串匹配规则筛选指定行

Pandas 跨列子串筛选实现方案

你开头提到的「列C」应该是笔误,以下代码默认匹配你示例的列A、列B逻辑,如果确实是判断列C和列B的子串关系,替换对应列名即可。

方案1:列表推导式(优先推荐,性能最优)

直接遍历两列的对应值做判断,适合绝大多数场景,性能远高于axis=1的apply操作:

import pandas as pd

# 构造示例DataFrame,可替换为你自己的数据集
df = pd.DataFrame({
    'Column A': ['string', 'another', 'nope'],
    'Column B': ['str', 'arr', 'eee']
})

# 核心筛选逻辑:保留 列B值不是列A值子串 的行
filtered_df = df[[b not in a for a, b in zip(df['Column A'], df['Column B'])]]

方案2:apply逐行判断(可读性高,适合小表)

逻辑直观好理解,数据量低于1万行的场景可以用:

filtered_df = df[df.apply(lambda row: row['Column B'] not in row['Column A'], axis=1)]

补充说明

如果需要不区分大小写判断子串,提前把两个列的内容统一转成小写/大写即可:

filtered_df = df[[b.lower() not in a.lower() for a, b in zip(df['Column A'], df['Column B'])]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:24:02