In the real world, we can come across datasets of any form that may include the date inside them too. These datasets can be present in any file format like .CSV, .xlsx, .txt, etc. To load this data inside Python, we use a library named Pandas which provides us a plethora of functions and methods to play around with this data. Pandas read these datasets in the form of DataFrames.
Sometimes, there might be a situation where the dataset may contain attributes related to date, and we want to sort the records inside the dataframe as per the date values in a specific order.
In this article, we will learn about how can we sort Pandas DataFrame by the Date. I’ll be creating a custom dataframe object imitating a real-world problem and this method will work universally for any DataFrame.
Sorting by Single Column
To sort a DataFrame as per the column containing date we’ll be following a series of steps, so let’s learn along.
Step 1: Load or create dataframe having a date column
Python
import pandas as pd
data = pd.DataFrame({ 'AdmissionDate' : [ '2021-01-25' , '2021-01-22' , '2021-01-20' ,
'2021-01-18' , '2021-01-22' , '2021-01-17' , '2021-01-21' ],
'StudentID' : [ 7 , 5 , 3 , 2 , 6 , 1 , 4 ],
'Name' : [ 'Ram' , 'Shyam' , 'Mohan' , 'Sohan' , 'Lucky' , 'Abhinav' , 'Danny' ],
'Stream' :[ 'CSE' , 'ECE' , 'Civil' , 'Mechanical' , 'CSE' , 'IT' , 'EEE' ]
})
print (data)
|
Output:

Here, it can be clearly seen that our DataFrame contains a column named ‘AdmissionDate’ which contains date values.
Step 2: Converting string data type into datetime object.
When we read the dataset the values stored inside the ‘AdmissionDate’ column are treated as string data type by default. So, we need to convert this string object to datetime object, for that we will be using the .to_datetime() method provided by Pandas that can be done as:
Python
print ( type (data.AdmissionDate[ 0 ]))
data[ 'AdmissionDate' ] = pd.to_datetime(data[ 'AdmissionDate' ])
print ( type (data.AdmissionDate[ 0 ]))
|
Output:
<class 'str'>
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
Step 3: Sorting the DataFrame as per date
We will be using the sort_values() method to sort our dataset and the attribute that we will pass inside the function is the column name using which we want to sort our DataFrame.
Python
data.sort_values(by = 'AdmissionDate' )
print (data)
|
Output:

One thing to notice here is our DataFrame gets sorted in ascending order of dates, to sort the DataFrame in descending order we can pass an additional parameter inside the sort_values() function that will set ascending value to False and will return the DataFrame in descending order.
Python
data.sort_values(by = 'AdmissionDate' ,ascending = False )
print (data)
|
Output:

Sorting by Multiple Columns as per date
We can further extend our understanding for sorting multiple datetime columns as well, in this, we maintain a priority order to sort our DataFrame. Let’s have a look.
Step 1: Load or create dataframe having multiple date columns
Python
import pandas as pd
data_1 = pd.DataFrame({ 'Mfg. Date' : [ '2021-01-25' , '2021-01-22' , '2021-01-20' , '2021-01-18' ,
'2021-01-22' , '2021-01-17' , '2021-01-21' ],
'ProductID' : [ 7 , 5 , 3 , 2 , 6 , 1 , 4 ],
'Product Name' : [ 'Paracetamol' , 'Moov' , 'Volini' , 'Crocin' ,
'Aciloc' , 'Iodex' , 'Combiflam' ],
'Expiry Date' :[ '2022-01-25' , '2023-01-22' , '2021-05-20' , '2022-03-18' ,
'2022-01-22' , '2021-05-17' , '2022-01-30' ]
})
print (data_1)
|
Output:

Here, it can be clearly seen that our DataFrame contains two columns having dates namely ‘Mfg. Date’ and ‘Expiry Date ‘.
Step 2: Converting string data type into datetime object.
Python
data_1[[ 'Mfg. Date' , 'Expiry Date' ]] = data_1[[ 'Mfg. Date' , 'Expiry Date' ]]. apply (pd.to_datetime)
|
Step 3: Sorting the DataFrame as per date
Python
data_1.sort_values(by = [ 'Expiry Date' , 'Mfg. Date' ])
|
Output:

Here, we got a sorted list in ascending order of Expiry Date as per our priority.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
09 Dec, 2021
Like Article
Save Article