2016-08-01 16 views
0

Ich habe diesen Datenrahmen df bestehend aus zwei Spalten ID und Date:Wie zwei Spalten nach absteigender Reihenfolge in Pandas sortiert werden?

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 

Ich mag df von ID und Date sortieren in absteigender Reihenfolge (größte -> kleinst), aber dies scheint nicht funktioniert, wenn ich versuchte, das folgende Skript:

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

die Ausgabe sollte in dieser absteigenden Reihenfolge:

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 

Wie kann ich das Datum in der richtigen absteigenden Reihenfolge sortieren?

+8

sollte es nicht sein 'df.sort_values ​​([" ID "," Date "], aufsteigend = [False, False])'? d. h. bools nicht strings, was Sie getan haben, hat dazu geführt, dass die Strings als 'True'-Boolesche Werte ausgewertet wurden. – EdChum

+0

Nicht sicher, ob das nützlich ist. Aber einen Versuch wert. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html – user2532296

Antwort

2

Sie müssen zuerst den Typ der Date-Spalte von String in Date umwandeln.

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

Jetzt können Sie df.sort_values ​​

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

Ausgabe verwenden:

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 

in Ihrem Code für Argument aufsteigend Sie vorbei String "False", aber es sollte sein bool False

Verwandte Themen