ano*_*ser 3 dataframe python-3.x pandas
在 pandas 数据框中,我试图计算 True 连续出现的次数。
(例如,True、True、True 表示连续出现 2 次)
输入:
df = pd.DataFrame({"A": [False, False, True, True, False, True, False, False, False, False, True, True, True, True, False, True, True, True]})
Run Code Online (Sandbox Code Playgroud)
输出:
6
Run Code Online (Sandbox Code Playgroud)
我实在不知道如何解答这个问题。
这是一种方法:
grp = (~df['A']).cumsum()
df['A'].groupby(grp).sum().sub(1).clip(0,).sum()
Run Code Online (Sandbox Code Playgroud)
输出:
6
Run Code Online (Sandbox Code Playgroud)
使用 False 值上的 cumsum 创建所有 true 值的分组,然后对每个组中的 True 值求和,并为定义该组的第一个 False 减去 1。使用 Clip 消除不具有 True 的组并对这些值求和。
这是通过数据框列分步骤分解的另一种方法。
df['B'] = (~df['A']).cumsum()
df['C'] = df.duplicated(['A', 'B'], keep='first')
df['C'].sum()
Run Code Online (Sandbox Code Playgroud)
输出:
6
Run Code Online (Sandbox Code Playgroud)
详细输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |