You can use the nsmallest() method of pandas. This method returns the first k rows with the smallest values in the specified column(s) in ascending 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.nsmallest(3,['a'])
a b c
2 11 84 6
8 13 52 6
9 29 95 75
>>> df.nsmallest(3,['a','b'])
a b c
2 11 84 6
8 13 52 6
9 29 95 75
Another approach using sort_values() method:
>>> df.sort_values('a', ascending=True).head(3)
a b c
2 11 84 6
8 13 52 6
9 29 95 75
>>>