• Post author:
  • Post category:Pandas
  • Post last modified:May 27, 2024
  • Reading time:12 mins read
You are currently viewing Pandas Drop Last N Rows From DataFrame

To drop the last n rows from a Pandas DataFrame, you have several options like use iloc[], drop(), slicing[], and head() functions. Additionally, you can use the drop() function to drop rows from the DataFrame’s beginning. In this article, I will explain how to drop/remove the last n rows from Pandas DataFrame.

Advertisements

Key Points –

  • Utilize the DataFrame.drop() method in Pandas to remove rows from the end of a DataFrame.
  • Set the axis parameter to 0 to indicate row-wise operation.
  • Specify the range of rows to drop using slicing notation, such as df[:-n] where n represents the number of rows to drop from the end.
  • Ensure data integrity by verifying the number of rows to drop does not exceed the DataFrame’s total number of rows.
  • Avoid modifying the original DataFrame by assigning the result to a new DataFrame or using the inplace parameter if necessary.

Related: In Pandas, you can drop the first n rows from DataFrame.

Quick Examples of Drop Last N Rows

If you are in a hurry, below are some quick examples of dropping the last n rows from DataFrame.


# Quick examples of drop last n rows 

# Example 1: Number of rows to drop
n = 2

# Example 2: By using DataFrame.iloc[] 
# To drop last n rows
df2 = df.iloc[:-n] 

# Example 3: Using drop() function 
# To delete last n rows
df.drop(df.tail(n).index,inplace = True)

# Example 4: Slicing last n rows
df2 = df[:-n]

# Example 5: Using DataFrame.head() 
# To drop last n rows
df2 = df.head(-n)

Now, let’s create a DataFrame with a few rows and columns, execute these examples, and validate the results. Our DataFrame contains column names Courses, Fee, Duration, and Discount.


import pandas as pd
technologies = {
    'Courses':["Spark","PySpark","Python","pandas"],
    'Fee' :[20000,25000,22000,24000],
    'Duration':['30days','40days','35days','60days'],
    'Discount':[1000,2300,2500,2000]
              }
index_labels=['r1','r2','r3','r4']
df = pd.DataFrame(technologies,index=index_labels)
print("DataFrame:\n", df)

Yields below output.

Pandas Drop Last N Rows

Drop Last N Rows Using DataFrame.iloc[]

You can use DataFrame.iloc[] the indexing syntax [:-n] with n as an integer to select the rows excluding the last n rows from the pandas DataFrame which results in a drop of the last n rows. You can also use iloc[] to drop rows by Index from pandas DataFrame.


# By using DataFrame.iloc[] to drop last n rows
n = 2
df2 = df.iloc[:-n] 
print("After dropping last n rows:\n", df2)

Yields below output.

Pandas Drop Last N Rows

Using DataFrame.drop() to Remove Last N Rows

By using DataFrame.drop() method you can remove the last n rows from pandas DataFrame. Use index param to specify the last index and inplace=True to apply the change on the existing DataFrame. For instance, df.drop(df.tail(n).index,inplace=True).


# Using drop() function to delete last n rows
n = 3
df.drop(df.tail(n).index,inplace = True)
print(df)

# Output:
#    Courses    Fee Duration  Discount
# r1   Spark  20000   30days      1000

Using DataFrame.slicing[] to Drop Last N Rows

Alternatively, You can also use df[:-n] to slice the last n rows of pandas DataFrame.


# Slicing last n rows
n = 2
df2 = df[:-n]
print(df2)

# Output:
#     Courses    Fee Duration  Discount
# r1    Spark  20000   30days      1000
# r2  PySpark  25000   40days      2300

Drop Last N Rows Using DataFrame.head() Function

You can also use df.head(-n) to delete the last n rows of pandas DataFrame. Generally, DataFrame.head() function is used to show the first n rows of a pandas DataFrame but you can pass a negative value to skip the rows from the bottom.


# Using DataFrame.head()
# To drop last n rows
n = 2
df2 = df.head(-n)
print(df2)

# Output:
#     Courses    Fee Duration  Discount
# r1    Spark  20000   30days      1000
# r2  PySpark  25000   40days      2300

Complete Example


import pandas as pd
technologies = {
    'Courses':["Spark","PySpark","Python","pandas"],
    'Fee' :[20000,25000,22000,24000],
    'Duration':['30days','40days','35days','60days'],
    'Discount':[1000,2300,2500,2000]
              }
index_labels=['r1','r2','r3','r4']
df = pd.DataFrame(technologies,index=index_labels)
print(df)

# Number of rows to drop
n = 2
# By using DataFrame.iloc[] 
# To drop last n rows
df2 = df.iloc[:-n] 
print(df2)

# Number of rows to drop
n = 1
# Using drop() function 
# To delete last n rows
df.drop(df.tail(n).index,
        inplace = True)
print(df)

# Number of rows to drop
n = 2
# Slicing last n rows
df2 = df[:-n]
print(df2)

#  Number of rows to drop
n = 2
#  Using DataFrame.head() function 
# To drop last n rows
df2 = df.head(-n)
print(df2)

FAQ on Dropping Last N Rows

How do I drop the last N rows from a DataFrame in Pandas?

You can use various methods. One common way is to use slicing notation directly on the DataFrame, such as df[:-n], where n represents the number of rows to drop from the end.

Can I achieve the same using the DataFrame.drop() method?

You can. Utilize DataFrame.drop() with appropriate slicing to remove the desired rows. For example, df.drop(df.tail(n).index) will drop the last n rows.

Can I drop rows in place, modifying the original DataFrame?

You can drop rows in place, modifying the original DataFrame by using the inplace=True parameter with the DataFrame.drop() method.

Is there any difference in performance between using DataFrame.head() and slicing for dropping rows?

Performance differences are typically negligible between the two methods for dropping rows. Use the method that suits your coding style and requirements best.

Conclusion

In conclusion, we’ve explored various methods to drop the last n rows from a Pandas DataFrame. Through examples, we’ve demonstrated the usage of DataFrame.iloc[], DataFrame.drop(), DataFrame.head(), and DataFrame.slicing[]. These techniques offer flexibility in managing DataFrame rows based on specific requirements.

Happy Learning !!

References

Leave a Reply