如何基于多列值条件排除数据行?
基于多列条件排除数据行的实现方案
需求说明
需按以下逻辑筛选排除数据行:
- 第一步:找出ID1列值为
rev的所有行 - 第二步:提取上述行对应的ID2列值(示例中为
Ref1),排除所有ID2列等于该值的行
输入数据
ID1 ID2 VALUE post Ref1 12 post Ref1 3 rev Ref1 12 rev Ref1 3 post Ref2 10 post Ref2 5
期望输出
ID1 ID2 VALUE post Ref2 10 post Ref2 5
常用实现方法
Python Pandas 实现
通过两步筛选完成需求:
import pandas as pd # 构造输入数据 df = pd.DataFrame({ 'ID1': ['post', 'post', 'rev', 'rev', 'post', 'post'], 'ID2': ['Ref1', 'Ref1', 'Ref1', 'Ref1', 'Ref2', 'Ref2'], 'VALUE': [12, 3, 12, 3, 10, 5] }) # 获取需要排除的ID2值集合 exclude_id2 = df[df['ID1'] == 'rev']['ID2'].unique() # 筛选出ID2不在排除集合中的行 result_df = df[~df['ID2'].isin(exclude_id2)] print(result_df)
Excel 实现
使用公式结合筛选完成:
- 在空白列(如D列)输入公式,判断该行是否保留:
=IF(COUNTIFS(A:A,"rev",B:B,B2)>0,"排除","保留") - 筛选D列为
保留的行,即可得到目标结果
SQL 实现
通过子查询获取需排除的ID2值,再过滤数据:
SELECT * FROM data_table WHERE ID2 NOT IN ( SELECT DISTINCT ID2 FROM data_table WHERE ID1 = 'rev' );
内容的提问来源于stack exchange,提问作者user14070248
相关产品推荐
相关产品推荐

