Compare preceding two rows with subsequent two rows of each group till last record

后端 未结 1 1906
野的像风
野的像风 2020-12-22 09:24

I had a question earlier which is deleted and now modified to a less verbose form for you to read easily.

I have a dataframe as given below

df = pd.D         


        
相关标签:
1条回答
  • 2020-12-22 09:56
    import pandas as pd
    df = pd.DataFrame({'subject_id' :[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],'day':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] , 'PEEP' :[7,5,10,10,11,11,14,14,17,17,21,21,23,23,25,25,22,20,26,26,5,7,8,8,9,9,13,13,15,15,12,12,15,15,19,19,19,22,22,15]})
    
    df['shift1']=df['PEEP'].shift(1)
    df['shift2']=df['PEEP'].shift(2)
    
    df['fake_flag'] = np.where((df['shift1'] ==df['shift2']) | (df['shift1'] < df['shift2']), 'fake VAC', '')
    df.drop(['shift1','shift2'],axis=1)
    

    Output

    0   1   1   7   
    1   1   2   5   
    2   1   3   10  fake VAC
    3   1   4   10  
    4   1   5   11  fake VAC
    5   1   6   11  
    6   1   7   14  fake VAC
    7   1   8   14  
    8   1   9   17  fake VAC
    9   1   10  17  
    10  1   11  21  fake VAC
    11  1   12  21  
    12  1   13  23  fake VAC
    13  1   14  23  
    14  1   15  25  fake VAC
    15  1   16  25  
    16  1   17  22  fake VAC
    17  1   18  20  fake VAC
    18  1   19  26  fake VAC
    19  1   20  26  
    20  2   1   5   fake VAC
    21  2   2   7   fake VAC
    22  2   3   8   
    23  2   4   8   
    24  2   5   9   fake VAC
    25  2   6   9   
    26  2   7   13  fake VAC
    
    0 讨论(0)
提交回复
热议问题