In this article, we will discuss different ways to delete the last column of a pandas dataframe in python.

Table of Contents

Use iloc to drop last column of pandas dataframe

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

# Drop last column of a dataframe
df = df.iloc[: , :-1]

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

How did it work?

The syntax of dataframe.iloc[] is like,

df.iloc[row_start:row_end , col_start, col_end]

Arguments:

  • 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 last 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 end-1. Default is till the last 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 column from dataframe, just selected the columns from position 0 till one before the last column. As we can use the negative indexing, so to select all columns except last one use –> (:-1) i.e. from column at position 0 till -2 i.e. one position less than the last column (-1). To select all the rows use default values i.e. (:) i.e.

# Drop last column of a dataframe
df = df.iloc[: , :-1]

Checkout complete example to delete the last column 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)

# Drop last column of a dataframe
df = df.iloc[: , :-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  Age    City
0  Jack   34  Sydney
1  Riti   31   Delhi
2  Aadi   16  London
3  Mark   41   Delhi

Use drop() to remove last column 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 column of dataframe is as follows,

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)

# Drop last column
df.drop(columns=df.columns[-1], 
        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  Age    City
0  Jack   34  Sydney
1  Riti   31   Delhi
2  Aadi   16  London
3  Mark   41   Delhi

We fetched the column names of dataframe as a sequence and then selected the last column name using negative indexing i.e. at position -1. Then passed that name as the argument in drop() function, therefore it deleted the last column of dataframe.

Learn Pandas for data analysis

A tutorial series on pandas, to help you move from beginner to advance level.

Use del keyword to drop last column of pandas dataframe

Fetch the name of last column of dataframe i.e. at position -1, from the dataframe.columns sequence. Then select that column by passing column name in subscript operator i.e. df[df.columns[-1]]. Then call del keyword on selected column,

del df[df.columns[-1]]

It will delete the last column of dataframe.

Checkout complete example to remove the last column of dataframe is as follows,

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)

# Delete last column
del df[df.columns[-1]]

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

Output:

   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  Age    City
0  Jack   34  Sydney
1  Riti   31   Delhi
2  Aadi   16  London
3  Mark   41   Delhi

It deleted the last column of dataframe in place.

Use pop() to drop last column 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. Let’s use this to delete last column 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)

# Drop last column
df.pop(df.columns[-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  Age    City
0  Jack   34  Sydney
1  Riti   31   Delhi
2  Aadi   16  London
3  Mark   41   Delhi

We passed the column name of last column to the pop() function. It removed the last column of dataframe in place and also returned the deleted column as a series.

Summary:

We learned about different ways to delete last column of a dataframe.