I have the next DataFrame:
pd.DataFrame(['a','a','a','a','b','b','b','c','c','a'])
I need to create a column considering the variation on the other column.
Following this result:
| Letter | Number |
|---|---|
| a | 1 |
| a | 0 |
| a | 0 |
| a | 0 |
| b | 1 |
| b | 0 |
| b | 0 |
| c | 1 |
| c | 0 |
| a | 1 |
Every time the letter change, I need to put a 1.
Advertisement
Answer
shift
I’m assuming that df is what OP provided
df = pd.DataFrame(['a','a','a','a','b','b','b','c','c','a'])
Then reasigned the first column to a series letter
letter = df.iloc[:, 0]
pd.DataFrame({
'Letter': letter,
'Number': letter.shift().ne(letter).astype(int)
})
Letter Number
0 a 1
1 a 0
2 a 0
3 a 0
4 b 1
5 b 0
6 b 0
7 c 1
8 c 0
9 a 1