Pandas:条件滚动块计数

2024-05-16 01:08:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个系列,如下所示:

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

Tags: 答案pandastime顺序stepcount时间步骤
1条回答
网友
1楼 · 发布于 2024-05-16 01:08:44

让我们试试:

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

相关问题 更多 >