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

Pandas如何基于用户ID与登录状态生成分组递增序列列

问题根因

你原代码的逻辑存在两个核心错误:

  1. 没有提前按user_id做分组隔离,不同用户之间的状态变更会被误判为有效变化
  2. 使用cumcount()会在每个分组内逐行计数,导致同一登录状态下的不同行序列值持续累加,不符合同状态序列值不变的需求
正确实现代码
# 按user_id分组后,在单用户维度判断登录状态变化并做累积求和
df1['sequence'] = df1.groupby('user_id')['login_status'].apply(
    lambda x: (x != x.shift()).cumsum()
)
实现逻辑说明
  • 首先按user_id分组,确保不同用户的登录状态变更不会互相影响
  • 每个用户组内,通过x != x.shift()判断当前行登录状态是否和上一行有差异,差异返回布尔值True(对应数值1),无差异返回False(对应数值0)
  • 对布尔结果做累积求和:每次状态变化时累加值+1,同状态下累加值保持不变,最终结果正好匹配你需要的sequence规则

测试上述代码后,输出结果和你给出的预期完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:21:01