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

如何不用循环筛选分组后所有行均满足另一列条件的目标数值

无循环实现方案

以下是不同场景下的简单实现,都不需要写循环逻辑:

SQL 场景

直接通过分组聚合+条件过滤实现:

SELECT num
FROM 你的表名
GROUP BY num
HAVING COUNT(*) = COUNT(`Check-in`);

逻辑说明:COUNT(*)统计当前num分组下的总行数,COUNT(列名)会自动忽略该列的null值,两者相等即代表该分组下所有行的Check-in都不为空,完全匹配需求。如果要适配其他自定义判断条件,比如要求Check-in全部等于'X',可以把HAVING条件改成:

HAVING SUM(CASE WHEN `Check-in` != 'X' OR `Check-in` IS NULL THEN 1 ELSE 0 END) = 0

Python Pandas 场景

用分组过滤一行代码实现:

import pandas as pd

# 假设你的数据存储在DataFrame变量df中
# 得到符合条件的num数组
res_num = df.groupby('num').filter(lambda g: g['Check-in'].notna().all())['num'].unique()
# 如果需要转成逗号分隔的字符串:','.join(map(str, res_num.tolist()))

逻辑说明:按num分组后,filter会保留满足判断条件的分组,notna().all()校验该分组下所有Check-in值都非空,最后取去重后的num值即可。


Excel 场景

用函数组合直接生成结果:

=UNIQUE(FILTER(A2:A100,COUNTIFS(A:A,A2:A100,B:B,"<>")=COUNTIF(A:A,A2:A100)))

逻辑说明:A列为num列,B列为Check-in列,COUNTIFS统计每个num对应的非空Check-in行数,COUNTIF统计每个num的总行数,两者相等的num会被筛选出来,最后用UNIQUE去重得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:15:04