Pandas rank accounting for duplicate (tied) scores

Say I have data for participants in a competition. The columns are id and score.

import numpy as np
import pandas as pd
import random
d = {'id':list(range(10)), 
     'score':[10,10,8,8,8,5,4,3,2,1]}

df = pd.DataFrame(d)
df['rank'] = df['score'].rank(method='dense',ascending=False)

Which looks like

    id  score   rank
0   0   10  1.0
1   1   10  1.0
2   2   8   2.0
3   3   8   2.0
4   4   8   2.0
5   5   5   3.0
6   6   4   4.0
7   7   3   5.0
8   8   2   6.0
9   9   1   7.0

This is almost perfect. However, in a competition, if two participants tied for first place then the next place would be third. (However, we get 2). Likewise if the following 3 participants, who each scored 8, should each be ranked 3rd. The following number 5 scores are not tied, so they should be 6,7,8,9,10.

How do I accomplish this effect? rank(method='dense') got me this far, but pandas df.rank() does not appear to have an option that will get me to a 100% percent solution.

Answer

From comments, assisted by Michael.

import numpy as np
import pandas as pd
import random
d = {'id':list(range(10)), 
     'score':[10,10,8,8,8,5,4,3,2,1]}

df = pd.DataFrame(d)
df['rank'] = df['score'].rank(method='min',ascending=False)