Reputation: 53
I want to check if a column value changes for each unique value of "Name".
The dataframe I have looks like this
Name | Is finished? |
---|---|
Paul | No |
Paul | No |
Paul | No |
John | No |
John | No |
John | Yes |
John | Yes |
Ringo | No |
Ringo | No |
Ringo | Yes |
Ringo | Yes |
Ringo | Yes |
My desired output is an extra column which either says "True" if a value has changed, and "False" if it didn't change. Desired output would look like this:
| Name | Is finished? | Change|
| -------- | -------------- |---|
| Paul | No| False|
| Paul | No|False|
| Paul | No|False|
| John | No|False|
| John | No|False|
| John | Yes|True|
| John| Yes|False|
| Ringo | No|False|
| Ringo | No|False|
| Ringo | Yes|True|
| Ringo | Yes|False|
| Ringo | Yes|False|
Upvotes: 1
Views: 56
Reputation: 71689
Let us do groupby
and shift
to compare the current and previous row in Is finished
column
c = 'Is finished?'
df['Change'] = df[c].eq('Yes') & df.groupby('Name')[c].shift().eq('No')
Name Is finished? Change
0 Paul No False
1 Paul No False
2 Paul No False
3 John No False
4 John No False
5 John Yes True
6 John Yes False
7 Ringo No False
8 Ringo No False
9 Ringo Yes True
10 Ringo Yes False
11 Ringo Yes False
Upvotes: 1