我有一个系列如下:
Time Step
0 0
1 1
2 2
3 2
4 2
5 3
6 0
7 1
8 2
9 2
10 2
11 3
我想使用Pandas对包含step = 2的每个时间块执行条件滚动计数,并将该计数输出到新列。我找到了有关如何进行条件滚动计数(Pandas: conditional rolling count)的答案,但是我无法弄清楚如何将每个步骤的顺序运行计为一个块。输出应如下所示:
Time Step Run_count
0 0
1 1
2 2 RUN1
3 2 RUN1
4 2 RUN1
5 3
6 0
7 1
8 2 RUN2
9 2 RUN2
10 2 RUN2
11 3
答案 0 :(得分:0)
让我们尝试一下:
s = df.Step.where(df.Step.eq(2))
df['Run_count'] = s.dropna().groupby(s.isna().cumsum()).ngroup()+1
输出:
Time Step Run_count
0 0 0 NaN
1 1 1 NaN
2 2 2 1.0
3 3 2 1.0
4 4 2 1.0
5 5 3 NaN
6 6 0 NaN
7 7 1 NaN
8 8 2 2.0
9 9 2 2.0
10 10 2 2.0
11 11 3 NaN