i have a column like this,
A 1.0 1.0 2.0 3.0 4.0 5.0 5.0 5.0
i need to create a new column based on a condition, if the a[i] and a[i-1] is same, then value is 0 else 1.
result should look something like this:
A B 1.0 1 1.0 0 2.0 1 3.0 1 4.0 1 5.0 1 5.0 0 5.0 0
The right pandas way to do it?
Advertisement
Answer
Create boolean mask by sompare for not equal by ne with shifted Series and cast to integer:
df['B'] = df['A'].ne(df['A'].shift()).astype(int)
print (df)
A B
0 1.0 1
1 1.0 0
2 2.0 1
3 3.0 1
4 4.0 1
5 5.0 1
6 5.0 0
7 5.0 0
Detail:
print (df['A'].ne(df['A'].shift())) 0 True 1 False 2 True 3 True 4 True 5 True 6 False 7 False Name: A, dtype: bool