• Post author:
  • Post category:Pandas
  • Post last modified:March 27, 2024
  • Reading time:18 mins read
You are currently viewing Pandas Get Last Row from DataFrame?

To get the last row from a Pandas DataFrame, you can use either the .iloc indexer with a negative index or the .tail() method. By using the iloc[-1] property and tail(1) you can get the last row of Pandas.DataFrame. iloc[] is a property that is used to select rows and columns by position/index. If the position/index does not exist, it gives an index error. In this article, I will cover the usage of pandas.DataFrame.iloc[] and using this how we can get the last row of Pandas DataFrame in different ways with examples.

pandas loc[] is another property that is used to operate on the column and row labels. For a better understanding of these two learn the differences and similarities between pandas loc[] vs iloc[].

1. Quick Examples to Get the Last Row of DataFrame

If you are in a hurry, below are some quick examples of how to get the last row of Pandas DataFrame.


# Quick examples to get the last row of dataframe

# Example 1: Get last row 
# Using row position
print(df.iloc[-1])

# Example 2: Get the last row 
# Use tail()
print(df.tail(1))

# Example 3: Get last row 
# Using range index
print(df.iloc[-1:])

# Example 4: Get last row value 
# Using particular column
print(df['Fee'].iloc[-1])

# Example 5: Get last row value 
# Using index range
print(df['Discount'].iloc[:-1])

# Example 6: Get last row 
# Using loc() function
print(df.loc[df.index[-1]])

# Example 7: Get last row 
# Using values[]
print(df.values[-1:])

# Example 8: Get last row of particular column
print(df['Fee'].values[-1:])

# Example 9: Get the last row of DataFrame as a list
print(df.iloc[-1].tolist())

Let’s create a DataFrame using data from the Python dictionary using data from the Python dictionary then use the above examples to get the first row of DataFrame.


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

Yields below output.

pandas get last row

2. Get the Last Row of Pandas using iloc[]

Using the Pandas iloc[-1] attribute you can select the last row of the DataFrame.iloc[] is used to select a single row or column by using an index. iloc[-1] property returns the last row of DataFrame in the form of Pandas Series.

In the below example, to get the last row of a Pandas DataFrame using .iloc[] with negative indexing. Here, df.iloc[-1] accesses the last row of the DataFrame using negative indexing. This is a concise and commonly used method to retrieve the last row.

Related Article: Get the first row of Pandas DataFrame.


# Get the last row using row position
df2 = df.iloc[-1]
print("Get the last row from the DataFrame:\n", df2)

Yields below output.

pandas get last row

We can also get the last row of Pandas DataFrame by providing an index range i.e.[-1:] to iloc[] attribute. This syntax will be returned the last in the form of DataFrame. For example,


# Get last row using range index
df2 = df.iloc[-1:]
print("Get the last row from the DataFrame:\n", df2)

# Output:
# Get the last row from the DataFrame:
#    Courses    Fee Duration  Discount
# r5  pandas  24000   60days      2000

3. Get the First Row for a Particular Column

If you want to get the last row based on a particular column, we can pass the specified column into DataFrame and then call the iloc[] attribute, it will return the last row based on the specified column.

Replace 'Fee' with the actual name of the column for which you want to get the last value. This will print the last value in the specified column of your DataFrame.


# Get last row value using particular column
df2 = df['Fee'].iloc[-1]
print("Get the last row value of specified column:\n", df2)

# Output:
# Get the last row value of specified column:
# 24000

Alternatively, we can also get the last row based on a particular column using the index range of the iloc[] attribute. It will return the last row value in the form of a Series.


#  Get last row value using index range
df2 = df['Discount'].iloc[:-1]
print("Get the last row value:\n", df2)

# Output:
# Get the last row value:
# r5    2000
# Name: Discount, dtype: int64

4. Get the Last Row using loc()

We can also get the last row of DataFrame using the loc[] attribute for that, we have to pass the last row index with the help of the index[] attribute. It will return the last row in the form of a Series object.

When using loc[] to get the last row of a Pandas DataFrame, you need to use the index label of the last row. If your DataFrame has a default integer-based index. This assumes that the index labels are integers. If your DataFrame has a custom index, you would use the actual label instead.


# Get last row using loc() function
df2 = df.loc[df.index[-1]]
print("Get the last row from the DataFrame:\n", df2)

# Output:
# Get the last row from the DataFrame:
# Courses     pandas
# Fee          24000
# Duration    60days
# Discount      2000
# Name: r5, dtype: object

5. Get the Last Row of Pandas using values[] 

Pandas DataFrame.values attribute is used to return a Numpy representation of the given DataFrame. Use this attribute to get the last row of DataFrame in the form of a NumPy array.


# Get last row using values[] 
df2 = df.values[-1:]
print("Get the last row from the DataFrame:\n", df2)


# Output:
# Get the last row from the DataFrame:
# [['pandas' 24000 '60days' 2000]]


# Get last row of particular column
df2 = df['Fee'].values[-1:]
print("Get the last row from the DataFrame:\n", df2)

# Output:
# Get the last row from the DataFrame:
# [24000]

6. Get the Last Row of DataFrame using the tail()

The pandas.DataFrame.tail() method returns the last n rows of DataFrame. We can use this tail() function to get only the last row of the DataFrame, for that, we pass '1' as an argument to this function. It will return the last row of DataFrame.


# Get the last row use head()
df2 = df.tail(1)
print("Get the last row from the DataFrame:\n", df2)

# Output:
# Get the last row from the DataFrame:
#     Courses    Fee Duration  Discount
# r5  pandas  24000   60days      2000

7. Get the Last Row of pandas as a List

As we know from the above, we have got the last row of DataFrame using the df.iloc[-1]. It has given the result as a series object and then uses the series.tolist() function, we can get the last row of the DataFrame in the form of a list. For example,


# Get the last row of DataFrame as a list
df2 = df.iloc[-1].tolist()
print("Get the last row from the DataFrame:\n", df2)

# Output:
# Get the last row from the DataFrame:
# ['pandas', 24000, '60days', 2000]

Frequently Asked Questions on Pandas Get Last Row from DataFrame

How can I get the last row from a Pandas DataFrame?

To get the last row from a Pandas DataFrame, you can use either the .iloc indexer with a negative index or the .tail() method.

Can I use .tail() to get the last row?

You can use the .tail() method to get the last n rows of a Pandas DataFrame, and if you set n to 1, it will give you only the last row. The .tail(1) method returns a DataFrame containing the last row of the original DataFrame. If you only need the last row and want the result as a Series instead of a DataFrame.

What is the difference between using .iloc[-1] and .tail(1)?

While both methods will give you the last row, there is a subtle difference. .iloc[-1] returns a Series object, while .tail(1) returns a DataFrame with one row. If you want a Series, use .iloc[-1]; if you prefer a DataFrame with a single row, use .tail(1).

How can I get the last row if the DataFrame is empty?

If the DataFrame is empty, attempting to access the last row using .iloc[-1] will result in an IndexError. It’s advisable to check for an empty DataFrame before attempting to retrieve the last row.

Are there any other methods to get the last row?

Another approach is to use the iloc property with the shape attribute. This method is less concise but might be useful in certain situations.

Can I use .iloc with a negative index for other rows as well?

You can use .iloc with a negative index to access rows from the end of a Pandas DataFrame. Negative indexing in Python allows you to access elements from the end of a sequence.

Conclusion

In this article, I have explained the usage of DataFrame.iloc[] and using this how we can get the last row of DataFrame in different ways. As well as I explained how to get the last row using tail() and other functions.

Happy Learning !!

References

Naveen Nelamali

Naveen Nelamali (NNK) is a Data Engineer with 20+ years of experience in transforming data into actionable insights. Over the years, He has honed his expertise in designing, implementing, and maintaining data pipelines with frameworks like Apache Spark, PySpark, Pandas, R, Hive and Machine Learning. Naveen journey in the field of data engineering has been a continuous learning, innovation, and a strong commitment to data integrity. In this blog, he shares his experiences with the data as he come across. Follow Naveen @ LinkedIn and Medium