如何通过Pandas中的降序对两列进行排序?

时间:2016-08-01 16:52:16

标签: python sorting pandas dataframe

我的数据框df包含两列IDDate

ID    Date
4    1/1/2008
3    1/1/2007
2   9/23/2010
2    6/3/1998
2    1/1/2001 # Note this date should be before "6/3/1998" for ID# 2
1   4/30/2003

我想按dfID按降序排序Date(最大 - >最小),但是当我尝试以下脚本时,这似乎无效:

print df.sort_values(by=["ID", "Date"], ascending=["False", "False"])

输出应按降序排列:

ID    Date
4    1/1/2008
3    1/1/2007
2   9/23/2010
2    1/1/2001 
2    6/3/1998
1   4/30/2003

知道如何按正确的降序对日期进行排序?

1 个答案:

答案 0 :(得分:5)

首先需要将Date类型的String从String转换为Date。

df['Date'] = pd.to_datetime(df['Date'], format="%m/%d/%Y")

现在您可以使用 df.sort_values

print df.sort_values(by=["ID", "Date"], ascending=[False, False]) 

输出

   ID       Date
0   4 2008-01-01
1   3 2007-01-01
2   2 2010-09-23
4   2 2001-01-01
3   2 1998-06-03
5   1 2003-04-30

在你的代码中,对于升序参数,你传递字符串"False",但它应该是bool False