Erhalte die höchsten Werte aus jeder Spalte des pandas.DataFrame

8

Hier ist mein pandas.DataFrame :

%Vor%

Ich möchte ein neues DataFrame erstellen, das die obersten 3 Werte aus jeder Spalte meiner data DataFrame enthält.

Hier ist eine erwartete Ausgabe:

%Vor%

Wie kann ich das tun?

    
Michael 09.12.2013, 17:48
quelle

5 Antworten

9

Erstellen Sie eine Funktion, um die ersten drei Werte einer Serie zurückzugeben:

%Vor%

Wenden Sie es auf Ihren Datensatz an:

%Vor%     
Zelazny7 09.12.2013, 18:25
quelle
3

Mit numpy können Sie Array von Top-3-Werten entlang Spalten wie folgt erhalten:

%Vor%

Sie können zurück zu DataFrame konvertieren:

%Vor%     
alko 09.12.2013 18:14
quelle
1

Die anderen Lösungen (zum Zeitpunkt des Schreibens), sortieren den DataFrame mit superlinearer Komplexität pro Spalte , aber es kann tatsächlich mit linearer Zeit pro Spalte gemacht werden.

zuerst numpy.partition partitioniert das k kleinste Elemente an den k ersten Positionen (sonst unsortiert). Um die k größten Elemente zu erhalten, können wir

verwenden %Vor%

Kombinieren Sie dies mit Wörterbuch Verständnis, können wir verwenden:

%Vor%     
Ami Tavory 27.05.2015 00:39
quelle
0

Alternative Pandas-Lösung:

%Vor%     
MaxU 16.10.2016 19:21
quelle
0

Verwenden Sie nlargest like

%Vor%

wo

%Vor%     
Zero 05.10.2017 16:31
quelle

Tags und Links