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

Pandas基于同DataFrame跨列条件筛选保留目标行的方法

Pandas 多分组条件筛选保留符合规则的全组行

问题场景

现有包含col1、col2、col3三列的DataFrame,示例数据规则:

  • 共4条记录,col1列取值均为Device1
  • col2列取值依次为A、A、C、B
  • 对应col3列取值依次为true、false、false、false

筛选需求:按col1(设备维度)和col2做分组,仅保留分组内col3列至少存在1个true值的分组下的所有行。
以上述示例数据为例,只有col2=A的分组存在col3=true的记录,因此预期筛选结果仅保留col2=A的2条记录,对应col3取值分别为true、false。

实现代码

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({
    'col1': ['Device1'] * 4,
    'col2': ['A', 'A', 'C', 'B'],
    'col3': [True, False, False, False]
})

# 生成分组筛选掩码:同(col1, col2)分组下存在任意col3为True则标记为保留
filter_mask = df.groupby(['col1', 'col2'])['col3'].transform('any')
# 执行筛选
result = df[filter_mask]

逻辑说明

  • groupby(['col1', 'col2'])['col3'].transform('any')会生成和原DataFrame长度完全对齐的布尔序列:某行所在的(col1, col2)分组中只要存在任意一条记录的col3为True,对应行的掩码值就为True,否则为False
  • 直接用该掩码做行筛选,会完整保留符合条件分组下的所有记录,不会丢失同组内col3为False的行,完全匹配需求。

执行代码后得到的结果如下:

col1 col2   col3
0  Device1    A   True
1  Device1    A  False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:27:25