Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Incrementing add under condition in pandas

Tags:

python

pandas

For the following pandas dataframe

    servo_in_position   second_servo_in_position    Expected output
0   0   1   0
1   0   1   0
2   1   2   1
3   0   3   0
4   1   4   2
5   1   4   2
6   0   5   0
7   0   5   0
8   1   6   3
9   0   7   0
10  1   8   4
11  0   9   0
12  1   10  5
13  1   10  5
14  1   10  5
15  0   11  0
16  0   11  0
17  0   11  0
18  1   12  6
19  1   12  6
20  0   13  0
21  0   13  0
22  0   13  0

I want to increment the column "Expected output" only if "servo_in_position" changes from 0 to 1. I want also to assume "Expected output" to be 0 (null) if "servo_in_position" equals to 0.

I tried

input_data['second_servo_in_position']=(input_data.servo_in_position.diff()!=0).cumsum()

but it gives output as in "second_servo_in_position" column, which is not what I wanted.

After that I would like to group and calculate mean using:

print("Mean=\n\n",input_data.groupby('second_servo_in_position').mean())
like image 467
Tomasz Avatar asked Jul 29 '19 13:07

Tomasz


1 Answers

Using cumsum and arithmetic.


u = df['servo_in_position']

(u.eq(1) & u.shift().ne(1)).cumsum() * u

0     0
1     0
2     1
3     0
4     2
5     2
6     0
7     0
8     3
9     0
10    4
11    0
12    5
13    5
14    5
15    0
16    0
17    0
18    6
19    6
20    0
21    0
22    0
Name: servo_in_position, dtype: int64
like image 88
user3483203 Avatar answered Oct 23 '22 07:10

user3483203