我有一个pandas数据框架,基于客户服务案例在关闭之前的位置。每次对案件进行编辑并捕获审计审判。我想为案件的部门从以前的部门更改时生成一个计数器。
ID | 部门 | 开始日期结束日期 | |
---|---|---|---|
A | 销售额 | 2022年1月1日<2022年1月2日>||
销售 | 2022年1月2日 | 2022年1月3日 | |
运营 | 2022年1月3日 | 2022年1月4日 | |
销售 | 2022年1月4日 | 2022年1月5日 | |
B | 财务 | 2022年1月1日<2022年2月2日>||
B | 风险 | 2022年1月2日<2022年01月3日>
根据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