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

如何筛选指定Group值为该行最小Group值的数据行

问题描述

现有如下结构的数据:

Col1Col2.....Group
AB100
AB200
AC100
AD200

需求:当指定一个Group值时,仅筛选出同一维度(Col1、Col2等其他列完全相同的行组)的最小Group值等于该指定值的行。例如指定Group=200时,仅返回第四行(A、D、200)——因为A、B组的最小Group是100,所以该行组里的200行不纳入结果。

解决方法

1. SQL 实现

利用窗口函数先计算每个分组(所有除Group外的列)的最小Group值,再筛选符合条件的行:

WITH grouped_data AS (
    SELECT 
        *,
        MIN("Group") OVER (PARTITION BY Col1, Col2 /* 这里列出所有非Group列 */) AS min_group
    FROM your_table
)
SELECT Col1, Col2, "Group" /* 按需选择需要返回的列 */
FROM grouped_data
WHERE min_group = 200 /* 替换为你的指定Group值 */
AND "Group" = 200;

2. Python Pandas 实现

通过分组计算最小Group,合并后筛选:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'Col1': ['A', 'A', 'A', 'A'],
    'Col2': ['B', 'B', 'C', 'D'],
    'Group': [100, 200, 100, 200]
})

# 计算每个分组的最小Group值
min_group = df.groupby(['Col1', 'Col2'])['Group'].min().reset_index(name='min_group')

# 合并数据并筛选
target = 200
result = df.merge(min_group, on=['Col1', 'Col2'])
result = result[(result['min_group'] == target) & (result['Group'] == target)]

print(result)

运行结果:

Col1 Col2  Group  min_group
3    A    D    200        200

内容的提问来源于stack exchange,提问作者Mikhail T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:43:29