You can use the nlargest() method of pandas. This method returns the first k rows with the largest values in the specified column(s) in descending order. It also returns columns that are not specified, but those columns will not be ordered in the result.
Here is an example:
>>> df=pd.DataFrame({'a':np.random.randint(1,100,11), 'b':np.random.randint(1,100,11),'c':np.random.randint(1,100,11)})
>>> df
a b c
0 94 63 55
1 54 83 5
2 11 84 6
3 98 34 42
4 57 76 32
5 38 44 97
6 65 16 99
7 97 90 58
8 13 52 6
9 29 95 75
10 63 92 79
>>> df.nlargest(3,['a'])
a b c
3 98 34 42
7 97 90 58
0 94 63 55
>>> df.nlargest(3,['a','b'])
a b c
3 98 34 42
7 97 90 58
0 94 63 55
Another approach using sort_values() method:
>>> df.sort_values('a', ascending=False).head(3)
a b c
3 98 34 42
7 97 90 58
0 94 63 55