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

Pandas如何按id分组聚合多列布尔条件判断结果

pandas 按id分组聚合布尔列实现方案

直接按以下两步操作即可得到目标结果:

  • 生成三个布尔判断列
    用pandas的列级向量化运算生成判断列,性能远高于逐行遍历:
import pandas as pd

# 构造原始示例数据
df = pd.DataFrame({
    'id': [1, 1, 2, 3, 3],
    'A': [1, 5, 6, 1, 4],
    'B': [1, 7, 9, 5, 6],
    'C': [1, 2, 3, 4, 2]
})

# 新增三个布尔判断列
df['a_greater_than_b'] = df['A'] > df['B']
df['b_greater_than_c'] = df['B'] > df['C']
df['c_greater_than_a'] = df['C'] > df['A']
  • 按id分组聚合
    从给出的期望输出可以看出,聚合规则为:同一id下,某判断列所有行结果都为True时,聚合结果才为True,只要存在一行结果为False,最终返回False。直接调用groupby配合all()聚合即可:
res = df.groupby('id', as_index=False)[
    ['a_greater_than_b', 'b_greater_than_c', 'c_greater_than_a']
].all()

执行后打印res输出完全匹配目标结果:

id  a_greater_than_b  b_greater_than_c  c_greater_than_a
0   1             False             False             False
1   2             False              True             False
2   3             False              True             False

如果你需要的聚合规则是「同id下只要有一行满足判断就返回True」,把代码里的.all()替换为.any()即可。

内容的提问来源于stack exchange,提问作者l a s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:57:20