In this article we will discuss how to select top or bottom N number of rows in a Dataframe using head() & tail() functions.


Select first N Rows from a Dataframe using head() function

pandas.DataFrame.head()

In Python’s Pandas module, the Dataframe class provides a head() function to fetch top rows from a Dataframe i.e.

DataFrame.head(self, n=5)

It returns the first n rows from a dataframe. If n is not provided then default value is 5.
Let’s see how to use this.

Suppose we have a dataframe i.e.

# List of Tuples
empoyees = [('jack', 34, 'Sydney', 5) ,
           ('Riti', 31, 'Delhi' , 7) ,
           ('Aadi', 16, 'Tokyo', 9) ,
           ('Sunil', 41,'Delhi' , 12) ,
           ('Veena', 33, 'Delhi' , 4) ,
           ('Shaunak',35,'Mumbai', 5 ),
           ('Shaun', 35, 'Colombo', 11)
            ]

# Create a DataFrame object
empDfObj = pd.DataFrame(empoyees, columns=['Name', 'Age', 'City', 'Experience'], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])

print("Contents of the Dataframe : ")
print(empDfObj)

Contents of the Dataframe :
Contents of the Dataframe : 
      Name  Age     City  Experience
a     jack   34   Sydney           5
b     Riti   31    Delhi           7
c     Aadi   16    Tokyo           9
d    Sunil   41    Delhi          12
e    Veena   33    Delhi           4
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11

Select top 5 rows from the dataframe
# Select the top 5 rows of the Dataframe
dfObj1 = empDfObj.head()

print("First 5 rows of the Dataframe : ")
print(dfObj1)

Output:
First 5 rows of the Dataframe : 
    Name  Age    City  Experience
a   jack   34  Sydney           5
b   Riti   31   Delhi           7
c   Aadi   16   Tokyo           9
d  Sunil   41   Delhi          12
e  Veena   33   Delhi           4

As we didn’t provide the argument n, whose default value is 5. Therefore head() function returned first 5 lines of the dataframe.

Select top 2 rows from the dataframe

# Select the first 2 rows of the Dataframe
dfObj1 = empDfObj.head(2)

print("First 2 rows of the Dataframe : ")
print(dfObj1)

Output:
First 2 rows of the Dataframe : 
   Name  Age    City  Experience
a  jack   34  Sydney           5
b  Riti   31   Delhi           7

As n=2 therefore head() function returned first 2 lines of the dataframe.

Select first N rows from the dataframe with specific columns

Instead of selecting all the columns while fetching first 3 rows, we can select specific columns too i.e.

# Select the top 3 rows of the Dataframe for 2 columns only
dfObj1 = empDfObj[['Name', 'City']].head(3)

print("First 3 rows of the Dataframe for 2 columns : ")
print(dfObj1)

Output:
First 3 rows of the Dataframe for 2 columns : 
   Name    City
a  jack  Sydney
b  Riti   Delhi
c  Aadi   Tokyo

It will return the top 3 values of given columns only.

Select last N Rows from a Dataframe using tail() function

pandas.DataFrame.tail()

In Python’s Pandas module, the Dataframe class provides a tail() function to fetch bottom rows from a Dataframe i.e.

DataFrame.tail(self, n=5)

It returns the last n rows from a dataframe. If n is not provided then default value is 5.
Let’s see how to use this.

Suppose we have a dataframe i.e.

# List of Tuples
empoyees = [('jack', 34, 'Sydney', 5) ,
           ('Riti', 31, 'Delhi' , 7) ,
           ('Aadi', 16, 'Tokyo', 9) ,
           ('Sunil', 41,'Delhi' , 12) ,
           ('Veena', 33, 'Delhi' , 4) ,
           ('Shaunak',35,'Mumbai', 5 ),
           ('Shaun', 35, 'Colombo', 11)
            ]

# Create a DataFrame object
empDfObj = pd.DataFrame(empoyees, columns=['Name', 'Age', 'City', 'Experience'], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])

print("Contents of the Dataframe : ")
print(empDfObj)

Contents of the Dataframe :
Contents of the Dataframe : 
      Name  Age     City  Experience
a     jack   34   Sydney           5
b     Riti   31    Delhi           7
c     Aadi   16    Tokyo           9
d    Sunil   41    Delhi          12
e    Veena   33    Delhi           4
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11

Select bottom 5 rows from the dataframe
# Select the top 5 rows of the Dataframe
dfObj1 = empDfObj.head()

print("First 5 rows of the Dataframe : ")
print(dfObj1)

Output:
Last 5 rows of the Dataframe : 
      Name  Age     City  Experience
c     Aadi   16    Tokyo           9
d    Sunil   41    Delhi          12
e    Veena   33    Delhi           4
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11

As we didn’t provide the argument n, whose default value is 5. Therefore tail() function returned last 5 lines of the dataframe.

Select bottom 2 rows from the dataframe

# Select the bottom 2 rows of the Dataframe
dfObj1 = empDfObj.tail(2)

print("Last 2 rows of the Dataframe : ")
print(dfObj1)

Output:
Last 2 rows of the Dataframe : 
      Name  Age     City  Experience
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11

As n=2 therefore tail() function returned last 2 lines of the dataframe.

Select bottom N rows from the dataframe with specific columns

Instead of selecting all the columns while fetching last 3 rows, we can select specific columns too i.e.

# Select the bottom 3 rows of the Dataframe for 2 columns only
dfObj1 = empDfObj[['Name', 'City']].tail(3)

print("Last 3 rows of the Dataframe for 2 columns : ")
print(dfObj1)

Output:
Last 3 rows of the Dataframe for 2 columns : 
      Name     City
e    Veena    Delhi
f  Shaunak   Mumbai
g    Shaun  Colombo

It returns the bottom 2 values of given columns only.

Complete example is as follows,

import pandas as pd

def main():


    # List of Tuples
    empoyees = [('jack', 34, 'Sydney', 5) ,
               ('Riti', 31, 'Delhi' , 7) ,
               ('Aadi', 16, 'Tokyo', 9) ,
               ('Sunil', 41,'Delhi' , 12) ,
               ('Veena', 33, 'Delhi' , 4) ,
               ('Shaunak',35,'Mumbai', 5 ),
               ('Shaun', 35, 'Colombo', 11)
                ]

    # Create a DataFrame object
    empDfObj = pd.DataFrame(empoyees, columns=['Name', 'Age', 'City', 'Experience'], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])

    print("Contents of the Dataframe : ")
    print(empDfObj)

    print('**** Select first n Rows from a Dataframe using head() function ****')

    # Select the top 5 rows of the Dataframe
    dfObj1 = empDfObj.head()

    print("First 5 rows of the Dataframe : ")
    print(dfObj1)

    # Select the first 2 rows of the Dataframe
    dfObj1 = empDfObj.head(2)

    print("First 2 rows of the Dataframe : ")
    print(dfObj1)

    # Select the top 3 rows of the Dataframe for 2 columns only
    dfObj1 = empDfObj[['Name', 'City']].head(3)

    print("First 3 rows of the Dataframe for 2 columns : ")
    print(dfObj1)

    print('**** Select last n Rows from a Dataframe using tail() function ****')

    # Select the bottom 5 rows of the Dataframe
    dfObj1 = empDfObj.tail()

    print("Last 5 rows of the Dataframe : ")
    print(dfObj1)

    # Select the bottom 2 rows of the Dataframe
    dfObj1 = empDfObj.tail(2)

    print("Last 2 rows of the Dataframe : ")
    print(dfObj1)

    # Select the bottom 3 rows of the Dataframe for 2 columns only
    dfObj1 = empDfObj[['Name', 'City']].tail(3)

    print("Last 3 rows of the Dataframe for 2 columns : ")
    print(dfObj1)


if __name__ == '__main__':
  main()

Output:
Contents of the Dataframe : 
      Name  Age     City  Experience
a     jack   34   Sydney           5
b     Riti   31    Delhi           7
c     Aadi   16    Tokyo           9
d    Sunil   41    Delhi          12
e    Veena   33    Delhi           4
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11
**** Select first n Rows from a Dataframe using head() function ****
First 5 rows of the Dataframe : 
    Name  Age    City  Experience
a   jack   34  Sydney           5
b   Riti   31   Delhi           7
c   Aadi   16   Tokyo           9
d  Sunil   41   Delhi          12
e  Veena   33   Delhi           4
First 2 rows of the Dataframe : 
   Name  Age    City  Experience
a  jack   34  Sydney           5
b  Riti   31   Delhi           7
First 3 rows of the Dataframe for 2 columns : 
   Name    City
a  jack  Sydney
b  Riti   Delhi
c  Aadi   Tokyo
**** Select last n Rows from a Dataframe using tail() function ****
Last 5 rows of the Dataframe : 
      Name  Age     City  Experience
c     Aadi   16    Tokyo           9
d    Sunil   41    Delhi          12
e    Veena   33    Delhi           4
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11
Last 2 rows of the Dataframe : 
      Name  Age     City  Experience
f  Shaunak   35   Mumbai           5
g    Shaun   35  Colombo          11
Last 3 rows of the Dataframe for 2 columns : 
      Name     City
e    Veena    Delhi
f  Shaunak   Mumbai
g    Shaun  Colombo

Subscribe with us to join a list of 2000+ Programmers for weekly newsletter.