Python Pandas,运行Sum,基于前几行的值并分组



我有一个pandas数据框架,基于客户服务案例在关闭之前的位置。每次对案件进行编辑并捕获审计审判。我想为案件的部门从以前的部门更改时生成一个计数器。

开始日期2022年1月1日<2022年1月2日>2022年1月1日<2022年2月2日>2022年1月2日<2022年01月3日>
ID 部门结束日期
A 销售额
销售 2022年1月2日 2022年1月3日
运营 2022年1月3日 2022年1月4日
销售 2022年1月4日 2022年1月5日
B 财务
B 风险

根据ID比较Department中的前一行和当前行,然后根据ID再次比较group,并计算cumsum以生成计数器

m = df['Department'] != df.groupby('ID')['Department'].shift()
df['Dept_Change_Count'] = m.groupby(df['ID']).cumsum() - 1

使用具有lambda函数的单个groupby计算cumsum:的替代方法

df['Dept_Change_Count'] = df.groupby('ID')['Department']
.apply(lambda s: (s != s.shift()).cumsum()) - 1

ID  Department  Start Date    End Date  Dept_Change_Count
0  A       Sales  01/01/2022  02/01/2022                  0
1  A       Sales  02/01/2022  03/01/2022                  0
2  A  Operations  03/01/2022  04/01/2022                  1
3  A       Sales  04/01/2022  05/01/2022                  2
4  B     Finance  01/01/2022  02/01/2022                  0
5  B        Risk  02/01/2022  03/01/2022                  1

最新更新