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

Pandas当重复分组内另一列值超阈值时删除该分组所有行

问题需求

现有Pandas DataFrame,A列存在重复取值,每组重复A值对应的B列取值各不相同,需要实现:如果某组重复A值对应的B列中存在高于15的数值,则删除该A值对应的全部行。

原始数据样例

A ColumnB Column
110
114
210
220
35
310

期望输出结果

A ColumnB Column
110
114
35
310
实现方案

核心逻辑

按A列分组后,仅保留所有B列取值都不超过15的分组即可。

完整代码

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'A Column': [1, 1, 2, 2, 3, 3],
    'B Column': [10, 14, 10, 20, 5, 10]
})

# 方法1:使用groupby+filter直接筛选分组(可读性更高)
df_result = df.groupby('A Column').filter(lambda group: (group['B Column'] <= 15).all())

# 方法2:使用transform生成布尔掩码过滤(性能更高,适合大数据量场景)
mask = df.groupby('A Column')['B Column'].transform(lambda x: (x <= 15).all())
df_result = df[mask]

print(df_result)

代码说明

  • groupby('A Column'):按A列的值对DataFrame进行分组,相同A值的行被分到同一组
  • filter(lambda group: (group['B Column'] <= 15).all()):遍历每个分组,仅保留组内所有B列值都小于等于15的分组,不满足条件的分组整组删除
  • transform方法是先生成和原DataFrame行数一致的布尔掩码,符合条件的行标记为True,再通过掩码过滤得到结果,数据量大时比filter方法效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:10