在Pandas 数据框中,我试图计算True连续出现的次数.
(例如:True、True、True表示连续出现两次)
输入:
df = pd.DataFrame({"A": [False, False, True, True, False, True, False, False, False, False, True, True, True, True, False, True, True, True]})
输出:
6
我真的不知道如何解决这个问题.
在Pandas 数据框中,我试图计算True连续出现的次数.
(例如:True、True、True表示连续出现两次)
输入:
df = pd.DataFrame({"A": [False, False, True, True, False, True, False, False, False, False, True, True, True, True, False, True, True, True]})
输出:
6
我真的不知道如何解决这个问题.
这里有一种方法:
grp = (~df['A']).cumsum()
df['A'].groupby(grp).sum().sub(1).clip(0,).sum()
输出:
6
使用对FALSE值累加创建所有TRUE值的分组,然后将每个组中的TRUE值相加减go 1作为定义组的第一个FALSE.使用CLIP删除没有True的组,并对这些值求和.
下面是通过数据帧列分步骤分解的另一种方法.
df['B'] = (~df['A']).cumsum()
df['C'] = df.duplicated(['A', 'B'], keep='first')
df['C'].sum()
输出:
6
详细输出:
A B C
0 False 1 False
1 False 2 False
2 True 2 False
3 True 2 True
4 False 3 False
5 True 3 False
6 False 4 False
7 False 5 False
8 False 6 False
9 False 7 False
10 True 7 False
11 True 7 True
12 True 7 True
13 True 7 True
14 False 8 False
15 True 8 False
16 True 8 True
17 True 8 True