我的数据框df
包含两列ID
和Date
:
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
我想按df
和ID
按降序排序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
知道如何按正确的降序对日期进行排序?
答案 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