springhound
springhound

Reputation: 9

add Rank Column to pandas Dataframe based on column condition

What I have is below.

DOG Date Steps
Tiger 2021-11-01 164
Oakley 2021-11-01 76
Piper 2021-11-01 65
Millie 2021-11-01 188
Oscar 2021-11-02 152
Foster 2021-11-02 191
Zeus 2021-11-02 101
Benji 2021-11-02 94
Lucy 2021-11-02 186
Rufus 2021-11-02 65
Hank 2021-11-03 98
Olive 2021-11-03 122
Ellie 2021-11-03 153
Thor 2021-11-03 152
Nala 2021-11-03 181
Mia 2021-11-03 48
Bella 2021-11-03 23
Izzy 2021-11-03 135
Pepper 2021-11-03 22
Diesel 2021-11-04 111
Dixie 2021-11-04 34
Emma 2021-11-04 56
Abbie 2021-11-04 32
Guinness 2021-11-04 166
Kobe 2021-11-04 71

What I want is below. Rank by value of ['Steps'] column for each Date

DOG Date Steps Rank
Tiger 2021-11-01 164 2
Oakley 2021-11-01 76 3
Piper 2021-11-01 65 4
Millie 2021-11-01 188 1
Oscar 2021-11-02 152 3
Foster 2021-11-02 191 1
Zeus 2021-11-02 101 4
Benji 2021-11-02 94 5
Lucy 2021-11-02 186 2
Rufus 2021-11-02 65 6
Hank 2021-11-03 98 6
Olive 2021-11-03 122 5
Ellie 2021-11-03 153 2
Thor 2021-11-03 152 3
Nala 2021-11-03 181 1
Mia 2021-11-03 48 7
Bella 2021-11-03 23 8
Izzy 2021-11-03 135 4
Pepper 2021-11-03 22 9
Diesel 2021-11-04 111 2
Dixie 2021-11-04 34 5
Emma 2021-11-04 56 4
Abbie 2021-11-04 32 6
Guinness 2021-11-04 166 1
Kobe 2021-11-04 71 3

I tried below, but it failed.

df['Rank'] = df.groupby('Date')['Steps'].rank(ascending=False)

Upvotes: 0

Views: 474

Answers (1)

jezrael
jezrael

Reputation: 863531

First your solution for me working.

Maybe need method='dense' and casting to integers.

df['Rank'] = df.groupby('Date')['Steps'].rank(ascending=False, method='dense').astype(int)

Upvotes: 0

Related Questions