+1 vote
in Programming Languages by (71.8k points)

Is there any pandas method to fetch the first k rows with the smallest values in the given column(s) of a dataframe?

1 Answer

+1 vote
by (351k points)
selected by
 
Best answer

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

>>> 


...