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

如何按ID使用Lag/Lead与Partition By统计重分配相关次数?

实现按ID拆分的重分配统计方案

针对你已经获取到Reassign状态行的上一个和下一个个体的基础上,咱们可以分两步完成需要的统计任务,下面以Python的Pandas为例(如果用其他工具思路逻辑一致):

1. 统计每个ID出现Reassign状态的次数

这一步核心是筛选出所有状态为Reassign的记录,再按ID分组计数:

import pandas as pd

# 假设你的数据存储在df中,包含列:ID、状态、prev_id(Reassign行的上一个个体ID)、next_id(Reassign行的下一个个体ID)
reassign_records = df[df['状态'] == 'Reassign']
# 统计每个ID的Reassign次数
reassign_count_per_id = reassign_records.groupby('ID').size().rename('Reassign出现次数')

这段代码会得到一个Series,索引是ID,值是对应ID出现Reassign状态的次数,直接就能看到每个ID触发重分配状态的频次。

2. 统计每个个体被重分配到/从重分配出的次数

利用你已经获取的prev_id和next_id字段,分别统计“出”和“入”的次数:

  • 从重分配出次数:统计某个ID作为Reassign操作的来源(即出现在prev_id列)的次数
  • 被重分配到次数:统计某个ID作为Reassign操作的目标(即出现在next_id列)的次数

具体代码实现:

# 统计重分配出次数
out_count = reassign_records['prev_id'].value_counts().rename('从重分配出次数')
# 统计重分配入次数
in_count = reassign_records['next_id'].value_counts().rename('被重分配到次数')

# 合并两个统计结果,补全缺失值为0并转为整数
transfer_count = pd.concat([out_count, in_count], axis=1).fillna(0).astype(int)

比如你提到的ID 649598 Kruger,如果它在prev_id中出现2次,next_id中也出现2次,那么transfer_count里对应的行就会显示:

ID从重分配出次数被重分配到次数
649598 Kruger22

如果某个ID只有重分配入或者只有重分配出,fillna(0)会把缺失的次数补为0,保证结果的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:37:59