【问题标题】:Pandas: Conditional Rolling Block CountPandas:条件滚动块计数
【发布时间】:2020-08-28 20:48:22
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas dataframe series


    【解决方案1】:

    让我们试试吧:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2021-03-10
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2019-01-03
      相关资源
      最近更新 更多