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

Pandas按人员分组比较某列值与另一列前序值的最简方法

分组列相等判断最简实现方案

核心需求

  • 按person字段对DataFrame分组
  • 逐行判断同组内当前行A列值与前一行B列值是否相等
  • 优先不使用apply/lambda写法
  • 本次示例中待对比的两个值为applez与applet

示例输入DataFrame结构

df     A         B      person
0    fruit    applet     abby
1    applez   cherry     abby
...

实现代码

直接使用pandas原生分组向量化操作即可,无自定义循环、无apply/lambda调用,代码最简洁且性能最优:

df.groupby("person").A.eq(df.groupby("person").B.shift())

逻辑说明

  • df.groupby("person").B.shift():按person分组后将B列值向下错位1行,得到每行对应的同组前一行B列值;每组第一行无前序数据,错位后返回NaN
  • 分组后的A列调用.eq()方法,和错位后的B列序列做逐行相等判断,索引自动对齐
  • 该写法所有运算走pandas底层C实现的向量化逻辑,运行效率远高于apply、lambda或手写循环的写法

预期输出

0  NaN
1  False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:06:18