pandas: Wie wähle ich die erste Zeile in jeder GROUP BY-Gruppe?

8

Grundsätzlich das gleiche wie Wählen Sie die erste Zeile in jeder Gruppe GROUP BY? nur in Pandas.

%Vor%

Sortierung sieht vielversprechend aus:

%Vor%

Aber dann wird zuerst nicht das gewünschte Ergebnis geben ...     df.groupby ('A'). first ()

%Vor%     
ihadanny 27.05.2015, 15:09
quelle

3 Antworten

4

Ich möchte eine weitere Alternative anbieten:

%Vor%

Ein möglicher Vorteil hier ist, dass Sie einen ähnlichen indexierten Datenrahmen für Fälle zurückgeben, in denen Sie das möchten.

Ich meine das auch nicht als Frage oder Kritik an @ EdChums Antwort, aber es ist für mich nicht offensichtlich, dass die Sortierreihenfolge bei der Weitergabe an die Gruppe erhalten bleibt. Vielleicht ist es nach der Pandas-API, ich weiß ehrlich gesagt nicht, ob das hier etwas ist, auf das man zählen kann oder nicht, während die Methode rank() nicht so eindeutig ist.

    
JohnE 27.05.2015, 20:13
quelle
5

Im Allgemeinen, wenn Sie Ihre Daten in einer groupby sortieren möchten, aber es ist nicht eine der Spalten, die gruppiert werden, dann ist es besser sort der df vor der Ausführung von groupby :

%Vor%     
EdChum 27.05.2015 15:16
quelle
4

Die Funktion pandas groupby kann für das verwendet werden, was Sie wollen, aber es ist wirklich dafür gedacht Anhäufung. Dies ist eine einfache 'nimm die erste' Operation.

Was Sie eigentlich wollen, ist die Funktion pandas drop_duplicates , die Standardmäßig wird die erste Zeile zurückgegeben. Was Sie normalerweise als groupby-Schlüssel betrachten würden, sollten Sie als Teilmenge = Variable

übergeben %Vor%

Sollte tun, was Sie wollen.

Auch df.sort('A') sortiert den DataFrame df nicht, sondern gibt eine Kopie zurück, die sortiert ist. Wenn Sie es sortieren möchten, müssen Sie den Parameter inplace=True hinzufügen.

%Vor%     
firelynx 27.05.2015 15:21
quelle

Tags und Links