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

Python中按指定条件过滤行:保留A-E列与T列匹配的行

最优解决方案:删除A-E列无匹配T列值的行

首先先把你的表格规范整理一下,方便理解(补全了缺失的单元格):

ABCDET
02351021
514768
301111

核心需求是:保留那些A-E列中至少有一个值与该行T列值相等的行,删除完全不匹配的行。下面分两种常用场景给出最优方法:

场景1:用Excel/Google Sheets手动处理

这是最适合小表格快速操作的方法:

  1. 添加辅助列(比如F列),在F1单元格输入公式:
    =COUNTIF(A1:E1, T1) > 0
    
    或者如果列数少,也可以用更直观的OR判断:
    =OR(A1=T1, B1=T1, C1=T1, D1=T1, E1=T1)
    
    这两个公式都会返回TRUE(该行有匹配)或FALSE(无匹配)。
  2. 把公式下拉到所有数据行。
  3. 对辅助列进行筛选,只保留TRUE的行,然后删除FALSE的行(或者直接复制TRUE行到新工作表)。

场景2:用Python Pandas自动化处理

如果是大表格或者需要重复执行的场景,Pandas是效率最高的选择:
首先构造你的数据框(如果是从文件读取,用pd.read_excel()或pd.read_csv()即可):

import pandas as pd

# 模拟你的表格数据
data = {
    'A': [0, 5, 30],
    'B': [2, 1, 11],
    'C': [3, 4, None],
    'D': [5, 7, None],
    'E': [10, 6, None],
    'T': [21, 8, 11]
}
df = pd.DataFrame(data)

然后执行过滤操作:

# 生成每行的匹配掩码:A-E列是否有值等于T列
match_mask = df[['A', 'B', 'C', 'D', 'E']].eq(df['T'], axis=0).any(axis=1)
# 过滤得到需要保留的行
filtered_df = df[match_mask]

代码解释:

  • df[['A','B','C','D','E']].eq(df['T'], axis=0):逐行比较A-E列的每个值和对应行的T列值,生成一个布尔值组成的临时表格。
  • .any(axis=1):按行判断是否存在至少一个True(即有匹配值),得到每行的判断结果。
  • 最后用这个掩码过滤原数据框,就得到了所有需要保留的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:27:43