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

Python group by分组筛选:组内有isSelected=Yes仅保留该行如何实现?

解决方案

我们可以用pandas库的分组功能实现该需求,实现代码如下:

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({
    'Part': [1, 1, 5, 5, 3, 3],
    'project': ['A', 'A', 'C', 'C', 'B', 'B'],
    'Quote': [1, 1, 2, 2, 3, 3],
    'Price': [5.0, 2.2, 6.6, 1.2, 5.5, 4.6],
    'isSelected': ['No', 'Yes', 'No', 'Yes', 'No', 'No']
})

# 分组筛选规则
def filter_group(group):
    # 检查当前分组是否存在isSelected为Yes的行
    has_yes = (group['isSelected'] == 'Yes').any()
    if has_yes:
        # 存在则仅保留isSelected为Yes的行
        return group[group['isSelected'] == 'Yes']
    # 不存在则返回分组全部行
    return group

# 按指定字段分组后应用筛选规则
result = df.groupby(['Part', 'project', 'Quote'], group_keys=False).apply(filter_group).reset_index(drop=True)
print(result)

运行代码后输出的结果和预期完全一致:

PartprojectQuotePriceisSelected
1A12.2Yes
5C21.2Yes
3B35.5No
3B34.6No

补充说明

如果你的实际数据中同一个分组可能存在多条isSelected=Yes的行,上述代码也会全部保留,可根据业务需要额外添加去重规则调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:15:04