如何按日期对Pandas数据框架进行排序

如何按日期对Pandas数据框架进行排序

在现实世界中,我们可以遇到任何形式的数据集,其中也可能包括日期。这些数据集可以以任何文件格式出现,如.CSV、.xlsx、.txt等。为了在Python中加载这些数据,我们使用一个名为Pandas的库,它为我们提供了大量的函数和方法来处理这些数据。Pandas以DataFrames的形式读取这些数据集。

有时,可能会出现这样的情况:数据集可能包含与日期有关的属性,而我们想按照日期值的特定顺序对数据框架内的记录进行排序。

在这篇文章中,我们将学习如何按日期对Pandas DataFrame进行排序。我将模仿一个真实世界的问题创建一个自定义的数据框架对象,这个方法将普遍适用于任何数据框架。

按单列排序

为了按照包含日期的列对DataFrame进行排序,我们将遵循一系列的步骤,所以让我们一起学习。

第1步:加载或创建具有日期列的数据框架

# importing package
import pandas as pd
 
# Creating a dataframe that stores records of students taking admission in a college
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']
                   })
# Checking dataframe
print(data)
Python

输出:

如何按日期对Pandas数据框架进行排序?

在这里,我们可以清楚地看到,我们的DataFrame包含一个名为 “AdmissionDate “的列,其中包含日期值。

第2步:将字符串数据类型转换为日期时间对象。

当我们读取数据集时,存储在 “AdmissionDate “列中的值默认为字符串数据类型。因此,我们需要将这个字符串对象转换为数据时间对象,为此我们将使用Pandas提供的.to_datetime()方法,可以这样做。

# checking datatype
print(type(data.AdmissionDate[0]))
 
# convert to date
data['AdmissionDate'] = pd.to_datetime(data['AdmissionDate'])
 
# verify datatype
print(type(data.AdmissionDate[0]))
Python

输出:

<class 'str'>
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
Python

第3步:按日期对数据框架进行排序

我们将使用sort_values()方法对我们的数据集进行排序,我们将在该函数中传递的属性是我们要对数据框架进行排序的列名。

data.sort_values(by='AdmissionDate')
print(data)
Python

输出:

如何按日期对Pandas数据框架进行排序?

这里需要注意的是我们的DataFrame是按日期升序排序的,如果要按降序排序,我们可以在sort_values()函数中传递一个额外的参数,将升序值设置为False,并将以降序返回DataFrame。

data.sort_values(by='AdmissionDate',ascending=False)
print(data)
Python

输出:

如何按日期对Pandas数据框架进行排序?

按日期进行多列排序

我们也可以进一步扩展我们对多日期列排序的理解,在这一点上,我们保持一个优先顺序来对我们的DataFrame进行排序。让我们看一下。

第1步:加载或创建具有多个日期列的数据框架

# importing package
import pandas as pd
 
# Creating a DataFrame
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']
                       })
 
# Checking dataframe
print(data_1)
Python

输出:

如何按日期对Pandas数据框架进行排序?

在这里,我们可以清楚地看到,我们的数据框架包含两列日期,即 “制造日期 “和 “到期日期”。

第2步:将字符串数据类型转换为日期时间对象。

data_1[['Mfg. Date','Expiry Date']] = data_1[['Mfg. Date','Expiry Date']].apply(pd.to_datetime)
Python

第3步:按日期对数据框架进行排序

# sorting DataFrame by giving first priority to Expiry Date and then Mfg. Date
data_1.sort_values(by=['Expiry Date', 'Mfg. Date'])
Python

输出:

如何按日期对Pandas数据框架进行排序?

在这里,我们得到了一个按照我们的优先级,以到期日的升序排序的列表。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册