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

按Account id分组追踪Adoption Ladder状态变更问题求助

按Account ID分组追踪Adoption Ladder状态变更的修正方案

问题说明

你需要按Account id分组,追踪同一账号内Adoption Ladder列的状态变更(记录前态prev和现态cur),但当前代码未做分组处理,导致跨账号的行被误判为状态变更——比如账号111的最后一条记录和账号222的第一条记录会被错误对比,生成无效的变更标记。

现有代码:

data['changes From->To'] = ['no changes'] + [prev + ' --> ' + cur if prev != cur else 'no changes' for prev, cur in zip(data['Adoption ladder'], data['Adoption ladder'][1:])]

核心问题:这段代码是全局对比Adoption ladder的前后行,完全忽略了Account id的分组边界。

修正方案

用pandas的groupby按账号分组后,再在组内做状态对比:

import pandas as pd

# 为每个账号内的行生成前一个状态值,跨账号的行prev_ladder为NaN
data['prev_ladder'] = data.groupby('Account id')['Adoption ladder'].shift(1)

# 生成变更记录:仅同一账号内状态变化时记录,否则标记为no changes
data['changes From->To'] = data.apply(
    lambda row: f"{row['prev_ladder']} --> {row['Adoption ladder']}" 
    if pd.notna(row['prev_ladder']) and row['prev_ladder'] != row['Adoption ladder'] 
    else 'no changes',
    axis=1
)

逻辑解释

  • groupby('Account id')['Adoption ladder'].shift(1):只在同一个账号的范围内,把Adoption ladder的值向上偏移一行,这样每个行的prev_ladder只会是同账号的上一条状态,新账号的第一行prev_ladder会是NaN
  • apply判断逻辑:只有当prev_ladder不为空(说明是同账号的后续行)且前后状态不同时,才生成From->To的变更记录;其余情况(包括跨账号行、同账号状态未变)都标记为no changes

这样就能精准实现同一账号内的状态变更追踪,避免跨账号的误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:01:06