Pandas: Drop last N columns of dataframe

In this article, we will discuss different ways to delete last N columns of a dataframe in python.

Use iloc to drop last N columns of pandas dataframe

In Pandas, the Dataframe provides an attribute iloc to select a portion of the dataframe using position based indexing. This selected portion can be a few columns or rows . We can use this attribute to select all the columns except last N columns of the dataframe and then assign back that to the original variable. It will give an effect that we have deleted the last N columns from the dataframe. For example,

N = 3
# Drop last N columns of dataframe
df = df.iloc[: , :-N]

We selected a portion of dataframe, that included all rows, but it selected only first N-1 columns. Then assigned this back to the same variable. So, basically it removed the last N columns of dataframe.

How did it work?

The syntax of dataframe.iloc[] is like,

Advertisements
df.iloc[row_start:row_end , col_start, col_end]
  • row_start: The row index/position from where it should start selection. Default is 0.
  • row_end: The row index/position from where it should end the selection i.e. select till row_end-1. Default is till the first row of the dataframe.
  • col_start: The column index/position from where it should start selection. Default is 0.
  • col_end: The column index/position from where it should end the selection i.e. select till col_end-1. Default is till the first column of the dataframe.

It returns a portion of dataframe that includes rows from row_start to row_end-1 and columns from col_start to col_end-1.

To delete the last N columns of the dataframe, just select the columns from column number 0 till -N (i.e. N less from last) and select all rows. To select all the rows use default values i.e. (:) i.e. Drop last N columns of dataframe

df = df.iloc[: , :-N]

Checkout complete example to delete the last 3 columns of dataframe,

import pandas as pd

# List of Tuples
empoyees = [('Jack',    34, 'Sydney',   5) ,
            ('Riti',    31, 'Delhi' ,   7) ,
            ('Aadi',    16, 'London',   11) ,
            ('Mark',    41, 'Delhi' ,   12)]

# Create a DataFrame object
df = pd.DataFrame(  empoyees, 
                    columns=['Name', 'Age', 'City', 'Experience'])

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

N = 3
# Drop last N columns of dataframe
df = df.iloc[: , :-N]

print("Modified Dataframe : ")
print(df)

Output:

Contents of the Dataframe :
   Name  Age    City  Experience
0  Jack   34  Sydney           5
1  Riti   31   Delhi           7
2  Aadi   16  London          11
3  Mark   41   Delhi          12
Modified Dataframe :
   Name
0  Jack
1  Riti
2  Aadi
3  Mark

Use drop() to remove last N columns of pandas dataframe

In pandas, the dataframe’s drop() function accepts a sequence of column names that it needs to delete from the dataframe. To make sure that it removes the columns only, use argument axis=1 and to make changes in place i.e. in calling dataframe object, pass argument inplace=True.

Checkout complete example to delete the last 3 columns of dataframe,

import pandas as pd

# List of Tuples
empoyees = [('Jack',    34, 'Sydney',   5) ,
            ('Riti',    31, 'Delhi' ,   7) ,
            ('Aadi',    16, 'London',   11) ,
            ('Mark',    41, 'Delhi' ,   12)]


# Create a DataFrame object
df = pd.DataFrame(  empoyees, 
                    columns=['Name', 'Age', 'City', 'Experience'])

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

N = 3
# Drop last N columns of dataframe
df.drop(columns=df.columns[-N:], 
        axis=1, 
        inplace=True)

print("Modified Dataframe : ")
print(df)

Output:

Contents of the Dataframe :
   Name  Age    City  Experience
0  Jack   34  Sydney           5
1  Riti   31   Delhi           7
2  Aadi   16  London          11
3  Mark   41   Delhi          12
Modified Dataframe :
   Name
0  Jack
1  Riti
2  Aadi
3  Mark

We fetched the column names of dataframe as a sequence and passed the last N column names ( df.columns[-N:] ) as the columns argument in drop() function, therefore it deleted the last N columns (3 columns) of dataframe.

Use pop() to remove last N columns of pandas dataframe

In Pandas, dataframe provides a function pop(column_name). It expects a column name as an argument and deletes that column from the calling dataframe object. It also returns the deleted column as a series. We can use this to delete last N column of dataframe, for that we need to iterate over column names of dataframe in reverse and for first N columns call pop() function one by one. For example,

import pandas as pd

# List of Tuples
empoyees = [('Jack',    34, 'Sydney',   5) ,
            ('Riti',    31, 'Delhi' ,   7) ,
            ('Aadi',    16, 'London',   11) ,
            ('Mark',    41, 'Delhi' ,   12)]


# Create a DataFrame object
df = pd.DataFrame(  empoyees, 
                    columns=['Name', 'Age', 'City', 'Experience'])

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

N = 3
# Drop last N columns of dataframe
for i in range(N):
        df.pop(df.columns.values[-1])

print("Modified Dataframe : ")
print(df)

Output:

Contents of the Dataframe :
   Name  Age    City  Experience
0  Jack   34  Sydney           5
1  Riti   31   Delhi           7
2  Aadi   16  London          11
3  Mark   41   Delhi          12
Modified Dataframe :
   Name
0  Jack
1  Riti
2  Aadi
3  Mark

It removed the last 3 columns of dataframe in place.

Use del keyword to remove last N columns of pandas dataframe

Iterate over last N column names of dataframe and for each of them select the column by passing column name in subscript operator i.e. df[df.columns[-1]]. Then call del keyword on that selected column.

Checkout complete example to remove the last 3 columns of dataframe,

import pandas as pd

# List of Tuples
empoyees = [('Jack',    34, 'Sydney',   5) ,
            ('Riti',    31, 'Delhi' ,   7) ,
            ('Aadi',    16, 'London',   11) ,
            ('Mark',    41, 'Delhi' ,   12)]


# Create a DataFrame object
df = pd.DataFrame(  empoyees, 
                    columns=['Name', 'Age', 'City', 'Experience'])

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

N = 3
# Drop last N columns of dataframe
for i in range(N):
        del df[df.columns.values[-1]]

print("Modified Dataframe : ")
print(df)

Output:

Contents of the Dataframe :
   Name  Age    City  Experience
0  Jack   34  Sydney           5
1  Riti   31   Delhi           7
2  Aadi   16  London          11
3  Mark   41   Delhi          12
Modified Dataframe :
   Name
0  Jack
1  Riti
2  Aadi
3  Mark

It deleted the last 3 columns of dataframe in place.

Summary:

We learned about four different ways to delete last N columns of a dataframe.

Pandas Tutorials -Learn Data Analysis with Python

   

Are you looking to make a career in Data Science with Python?

Data Science is the future, and the future is here now. Data Scientists are now the most sought-after professionals today. To become a good Data Scientist or to make a career switch in Data Science one must possess the right skill set. We have curated a list of Best Professional Certificate in Data Science with Python. These courses will teach you the programming tools for Data Science like Pandas, NumPy, Matplotlib, Seaborn and how to use these libraries to implement Machine learning models.

Checkout the Detailed Review of Best Professional Certificate in Data Science with Python.

Remember, Data Science requires a lot of patience, persistence, and practice. So, start learning today.

Join a LinkedIn Community of Python Developers

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top