1

以下のように、複数の列を持つ巨大なデータフレームがあります。b の値が -1 で、前に 1 があるときの累積合計時間を見つけようとしています。累積合計を試しましたが、うまくいきません。

そのグループだけで b の値が -1 の場合にのみ、値の累積合計を探しています。b の値が 0 に変わったら、累積合計を 0 にリセットしたい

累積合計値は cummulative_sum_column の値と一致する必要があります

**date time**    **id**  **value**  **time**           **a****b**   **cummulative sum**
11/1/2021 0:05   v01111     4           0               0     0
11/1/2021 1:30   v01111     11      57.302              1     1 
11/1/2021 4:19   v01111     1       10129.88            0    -1 
11/1/2021 4:19   v01111     1       0.49                0    -1        10130.37
11/1/2021 9:30   v01111     2       0.202               0     0 
11/1/2021 9:31   v01111     11      58.699              1     1 
11/1/2021 10:31  v01111     1       3573.728            0    -1 
11/1/2021 10:31  v01111     1       0.29                0    -1       3574.018
11/2/2021 21:15  v01111     2       0.2                 0     0 
12/9/2021 20:17  v01112     11      58.525              1    0  
12/9/2021 20:53  v01113     11      2145.745            0    -1 
12/9/2021 20:53  v01114     1       0.016               0    -1           2146
12/9/2021 22:05  v01150     0       0.01                0    0  
12/9/2021 22:05  v01151     0       1.188               0    0  
12/9/2021 22:05  v01152     1       0.312               0   0   
12/9/2021 22:05  v01153     1       1.49                0   -1  
12/9/2021 22:09  v01153     1       4                   1   0   
12/10/2021 22:07 v01153     1       6                   0   -1            6

私は以下を試しましたが、コードは b の値が 0 になると b == -1 の値が 0 にリセットされない場合、すべての値の累積合計を計算します

df['test']= df.loc[(df['b'] == -1) & (df['b'].shift(+1) == 1), 'time'].cumsum()
4

2 に答える 2