我有一个数据,看起来像:
df = pd.DataFrame({
'ID': [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
'DATE': ['1/1/2015','1/2/2015', '1/3/2015','1/4/2015','1/5/2015','1/6/2015','1/7/2015','1/8/2015',
'1/9/2016','1/2/2015','1/3/2015','1/4/2015','1/5/2015','1/6/2015','1/7/2015'],
'CD': ['A','A','A','A','B','B','A','A','C','A','A','A','A','A','A']})
我想计算ID和CD发生的更改数。如何才能得到想要的结果。当我尝试cumcount时,它会计算相同的groupby,并给予它不同的数字。
我得到的是:
我期待的是:
2条答案
按热度按时间rm5edbpk1#
所需输出均值组中的
count
列第一个
使
grouper
划分组(将bool更改为int以便于查看)grouper
第二个
使用相同ID划分组(我将
grouper
设置为count
列,因为无论如何都必须创建count
列。)输出:
最后
输出到计数列
实验结果:
更新完整代码
更简单的完整代码,建议@ cottotail
hfsqlsce2#
让我们对ID列进行分组,并使用CD上的shift来检查更改,然后使用cumsum来创建顺序计数器
测试结果