2016-11-18 6 views
1

In R kann ich dplyr::arrange verwenden, um einen Datenrahmen durch eine temporäre Variable zu sortieren. Um zum Beispiel die NYC flights Datensatz im nycflights13 Pakets kann ich durch Geschwindigkeit sortieren, indem die Berechnung dieses Wertes aus den distance und air_time Spalten:Werte in einem Pandas-Datenrahmen durch eine temporäre Variable sortieren

library(nycflights13) 
arrange(flights, distance/air_time) 

Ist es möglich, dies mit Pandas zu erreichen (ohne explizit eine neue zu schaffen Spalte, nach dieser Spalte sortieren und dann diese Spalte wieder entfernen)?

Antwort

1

Ich denke, es möglich ist, durch reindex, erste Series.sort_values für die Sortierung verwenden:

df = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6], 
        'C':[7,8,9], 
        'D':[1,3,5], 
        'E':[5,3,6], 
        'F':[7,4,3]}) 

print (df) 
    A B C D E F 
0 1 4 7 1 5 7 
1 2 5 8 3 3 4 
2 3 6 9 5 6 3 

print (df.A/df.D) 
0 1.000000 
1 0.666667 
2 0.600000 
dtype: float64 

print ((df.A/df.D).sort_values()) 
2 0.600000 
1 0.666667 
0 1.000000 
dtype: float64 

print (df.reindex((df.A/df.D).sort_values().index)) 
    A B C D E F 
2 3 6 9 5 6 3 
1 2 5 8 3 3 4 
0 1 4 7 1 5 7 
+0

Nizza, das funktioniert! Hier ist die Syntax zum Sortieren des 'flights' Datenrahmens nach Geschwindigkeit:' flights.reindex ((flights.distance/flights.air_time) .sort_values ​​(aufsteigend = False) .index) ' – cbrnr

+0

Vielen Dank. Ich habe keine Beispieldaten (ich bin kein 'R' Benutzer, also erstelle ich Beispieldaten) – jezrael

+0

Danke @jezrael - Ich habe die Daten auf GitHub gesetzt, falls Sie dieses spezifische Beispiel ausführen möchten: https: // github. com/cbrnr/py4ds/blob/master/flights.csv – cbrnr

Verwandte Themen