pandas: Wie finden Sie die maximalen n Werte für jede Kategorie in einer Spalte?

8

Ich habe einen riesigen Stadtbibliotheks-Katalogdatensatz mit Buchtitel, der Bibliothek, in der er sich befindet, dem Bezirk der Bibliothek und der Anzahl der Ausleihen.

Ich möchte die drei am häufigsten ausgeliehenen Bücher für jede Gegend finden.

Im Idealfall würde ich so etwas bekommen:

%Vor%

usw.

Dies ist der nächste, den ich bekommen konnte, aber der resultierende Datenrahmen ist nicht nach Bezirk gruppiert und schwer zu lesen.

%Vor%

Danke für Ihre Hilfe.

    
robroc 30.07.2014, 17:52
quelle

3 Antworten

8

Kurz gesagt:

%Vor%

Die Schritte:

  • Machen Sie die richtige Gruppierung und Summe
  • Sortiert nach Bezirks- und Maximalwerten
  • Gruppe nach Bezirk und nimm 3 first

Dies ist der akzeptierten Antwort aufgrund beider

überlegen
  • Lesbarkeit (ja, eine lange Zeile, aber Sie könnten es auch aufteilen): alle Standardoperationen
  • Leistung (standardoptimierte Operationen im Vergleich zur iterativen Vergrößerung eines Datenrahmens mit concat , Speicherverschwendung

Meine Ausgabe (mit head(1) , da Testdaten nur 2 Zeilen pro Gruppe haben:

%Vor%     
FooBar 31.07.2014, 12:22
quelle
2

etwas wie das:

%Vor%     
acushner 30.07.2014 18:07
quelle
0
%Vor%

Arbeitet mit Eingabedatei im Format:

%Vor%

Ergebnisse geben:

%Vor%

Sie können die Anzahl der obersten Bücher und den Sortierschlüssel angeben, wenn Sie die Kriterien später anpassen müssen.

    
locohamster 30.07.2014 18:36
quelle

Tags und Links