BrkPressState | VehSpdGS |
---|---|
1 | 2 |
1 | 3 |
1 | 2 |
1 | 4 |
0 | 12 |
0 | 13 |
0 | 11 |
1 | 3 |
0 | 15 |
0 | 14 |
0 | 15 |
1 | 12 |
1 | 13 |
0 | 14 |
For the above table i am trying to populate the next row value in previous last event, Like the below table
I tried with Shift – 1 but its populating only for the current row , Sample code which i tried.
d['result']=d.loc[d['BrkPressState'] != d['BrkPressState'].shift(-1), 'VehSpdGS']
Expected output:
Advertisement
Answer
Let us do diff
to compare the previous and current row in BrkPressState
column in order to identify boundaries, then mask
and shift
the values in VehSpdGS
column
m = df['BrkPressState'].diff().ne(0) df['Results'] = df['VehSpdGS'].mask(~m).shift(-1)
BrkPressState VehSpdGS Results 0 1 2 NaN 1 1 3 NaN 2 1 2 NaN 3 1 4 12.0 4 0 12 NaN 5 0 13 NaN 6 0 11 3.0 7 1 3 15.0 8 0 15 NaN 9 0 14 NaN 10 0 15 12.0 11 1 12 NaN 12 1 13 14.0 13 0 14 NaN