如何按日期对 pandas dataframe 进行排序(带有示例)


通常,您可能希望根据包含日期的列对 pandas DataFrame 进行排序。幸运的是,使用sort_values()函数可以轻松做到这一点。

本教程展示了此功能实际使用的几个示例。

示例 1:按日期列排序

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
                   'customers': [2, 6, 9, 7],
                   'date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

   sales customers date
0 4 2 2020-01-25
1 11 6 2020-01-18
2 13 9 2020-01-22
3 9 7 2020-01-21

首先,我们需要使用to_datetime()函数将“date”列转换为日期时间对象:

 df[' date '] = pd. to_datetime (df[' date '])

接下来,我们可以使用sort_values()函数根据“日期”列对 DataFrame 进行排序:

 df. sort_values (by=' date ')

        sales customers date
1 11 6 2020-01-18
3 9 7 2020-01-21
2 13 9 2020-01-22
0 4 2 2020-01-25

默认情况下,此函数按升序对日期进行排序。但是,您可以指定ascending=False以降序排序:

 df. sort_values (by=' date ', ascending= False )

	sales customers date
0 4 2 2020-01-25
2 13 9 2020-01-22
3 9 7 2020-01-21
1 11 6 2020-01-18

示例 2:按多个日期列排序

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'person': ['A', 'B', 'C', 'D'],
                   'order_date': ['2020-01-15', '2020-01-15', '2020-01-20', '2020-01-20'],
                   'receive_date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

  person order_date receive_date
0 A 2020-01-15 2020-01-25
1 B 2020-01-15 2020-01-18
2 C 2020-01-20 2020-01-22
3 D 2020-01-20 2020-01-21

我们可以使用sort_values函数对多个列上的 DataFrame 进行排序,只需向该函数提供多个列名即可:

 #convert both date columns to datetime objects
df[['order_date','receive_date']] = df[['order_date','receive_date']]. apply (pd. to_datetime )

#sort DateFrame by order_date, then by receive_date
df. sort_values (by=['order_date', 'receive_date'])

        person order_date receive_date
1 B 2020-01-15 2020-01-18
0 A 2020-01-15 2020-01-25
3 D 2020-01-20 2020-01-21
2 C 2020-01-20 2020-01-22

DataFrame 现在按 order_date 升序排序,然后按receipt_date 升序排序。

其他资源

如何按日期过滤 Pandas DataFrame 行
如何将 DateTime 转换为 Pandas 中的日期
如何将 Pandas 中的列转换为日期时间
如何在 Pandas 中同时按索引和列排序

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注