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

MEh*_*san 2 python sorting dataframe pandas

我有这个数据帧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
Run Code Online (Sandbox Code Playgroud)

我要排序dfIDDate降序排列(最大- >最小的),但是当我尝试下面的脚本这似乎不工作:

print df.sort_values(by=["ID", "Date"], ascending=["False", "False"])
Run Code Online (Sandbox Code Playgroud)

输出应按此降序排列:

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
Run Code Online (Sandbox Code Playgroud)

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

RAV*_*AVI 6

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

df['Date'] = pd.to_datetime(df['Date'], format="%m/%d/%Y")
Run Code Online (Sandbox Code Playgroud)

现在您可以使用df.sort_values

print df.sort_values(by=["ID", "Date"], ascending=[False, False]) 
Run Code Online (Sandbox Code Playgroud)

输出:

   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
Run Code Online (Sandbox Code Playgroud)

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