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

Pandas如何按id分组聚合列大小比较的布尔值结果

实现方法

从给出的预期结果反推聚合规则:同一id下,某个比较列只有组内所有行的结果都为True时,聚合后才返回True,只要存在任意一行结果为False,聚合结果就为False,直接用pandas分组的all()聚合即可实现。

完整代码

import pandas as pd

# 构造原始DataFrame
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分组聚合
result = df.groupby('id', as_index=False)[
    ['a_greater_than_b', 'b_greater_than_c', 'c_greater_than_a']
].all()

运行结果

执行代码后得到的输出和预期完全一致:

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

逻辑说明

  • 比较列直接用pandas Series向量化运算生成,不需要逐行循环,执行效率更高
  • groupby('id')按id维度拆分数据块
  • 传入三个比较列的列表,指定仅对目标字段做聚合,避免无关列参与计算
  • all()方法会对每个分组内的布尔值做逻辑与判断:组内所有值为True才返回True,否则返回False,完全匹配预期聚合规则
  • 参数as_index=False可以让id保留为普通列,不会被设为索引,输出格式和要求一致

内容的提问来源于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.09.02 08:48:25