我有一个样本数据集-
Id Category
1 Active
1 Active
1 Active
1 End
2 Paused
2 Active
2 Active
预期输出是基于计数器的新列,该计数器使用group by id,并在类别更改时重置计数器
预期产量:-
Id Category Count
1 Active 0
1 Active 1
1 Active 2
1 End 0
2 Omitted 0
2 Active 0
2 Active 1
我已经使用了以下方法:
m = df['Category'] != df['Category'].shift(-1)
df['count'] = np.where(m, df.groupby(m.ne(m.shift(),'Id').cumsum()).cumcount()+1, 0)
但它只填充了0
我也试过这个-
mask = df['Id'] == df['Id'].shift(-1)
df['CatChange'] = df['Category'] != df['Category'].shift(-1)
count = df[mask].groupby('Id').cumcount()
df['CatChange_num'] = count
这只是在不考虑类别更改的情况下增加值
任何提示都会有帮助
我们可以
groupby
两列和cumcount
您可以尝试:
如果您希望计数从1开始,可以执行以下操作:
其中
print
:相关问题 更多 >
编程相关推荐