python – Pandas:考虑以前的记录,如何计算更改的数量

我有一个如下数据框:

import pandas as pd 
df = pd.DataFrame({"id":[1,1,1,1,1,1,2,2,2,2,3,3,3,3], 
                  "val":[0,1,1,0,1,0,0,1,0,1,0,0,0,1]})

    id  val
0    1    0
1    1    1
2    1    1
3    1    0
4    1    1
5    1    0
6    2    0
7    2    1
8    2    0
9    2    1
10   3    0
11   3    0
12   3    0
13   3    1

你可以看到ID是重复的,我的值在0和1之间交替.我想以某种方式计算值从0切换到1的次数.例如像这样:

id  val
1    2
2    2
3    1

它不是1的计数,而是对于每个ID,val切换为0 – > 1的计数器次数.

最佳答案 通过使用差异

df.groupby('id').val.apply(lambda x : sum(x.diff().eq(1)))
Out[306]: 
id
1    2
2    2
3    1
Name: val, dtype: int64
点赞