2016-08-01 68 views
0

我有這個數據幀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 

我想ID排序dfDate降序(最大 - >最小的),但是當我嘗試這樣做似乎不工作下面的腳本:

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 

任何想法如何以正確的降序排列日期?

+8

不應該是'df.sort_values([「ID」,「Date」],升序= [False,False])?即bools不是字符串,你做了什麼導致字符串被評估爲'True'布爾值 – EdChum

+0

不確定這是否有用。但值得一試。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html – user2532296

回答

2

您首先需要將日期列的類型從字符串轉換爲日期。

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",但應be bool False