Python Pandas GroupBy get Liste von Gruppen

7

Ich habe eine Codezeile:

%Vor%

Die Farben sind Rot, Blau, Grün, Gelb, Lila, Orange und Schwarz. Wie gebe ich diese Liste zurück? Für ähnliche Attribute verwende ich x.Attribute und es funktioniert gut, aber x.Color verhält sich nicht auf die gleiche Weise.

    
user3745115 04.03.2015, 00:18
quelle

4 Antworten

14

Es gibt viel einfachere Möglichkeiten:

%Vor%

Wenn Sie groupby() pandas ausführen, erhalten Sie ein Diktat von gruppierten DFs. Sie können die Schlüsselliste dieses Diktats leicht mit der Python-Funktion keys() erstellen.

    
Yanqi Ma 21.11.2016 13:23
quelle
5

Ich wollte dies als Kommentar zu Yanqi Mas Antwort hinzufügen, aber ich habe noch nicht den Ruf, es zu kommentieren.

Wenn Sie die Reihenfolge der Gruppen nicht interessiert, funktioniert diese Antwort gut:

%Vor%

Beachten Sie jedoch, dass g.groups ein Wörterbuch ist, also die Schlüssel sind inhärent ungeordnet! Dies ist auch dann der Fall, wenn Sie sort=True für die Methode groupby verwenden, um die Gruppen zu sortieren. was standardmäßig gilt.

Das hat mich wirklich hart gekostet, als es zu einer anderen Reihenfolge auf zwei Plattformen kam, besonders seit ich das zweite Formular oben benutzt habe, also war es zunächst nicht offensichtlich, dass g.groups ein dict war.

Meiner Meinung nach ist der beste Weg, dies zu tun, die Tatsache zu nutzen, dass die GroupBy-Objekt hat einen Iterator und verwendet ein Listenverständnis, um die Gruppen in der Reihenfolge zurückzugeben, in der sie im GroupBy-Objekt vorhanden sind:

%Vor%

Es ist ein wenig weniger lesbar, aber dies wird immer die Gruppen in der richtigen Reihenfolge zurückgeben.

    
Erik Swan 23.05.2017 00:30
quelle
3

Ich verstehe, dass Sie einen Datenrahmen haben, der mehrere Spalten enthält. Eine der Spalten ist "Farbe", die verschiedene Arten von Farben hat. Sie möchten eine Liste der vorhandenen eindeutigen Farben zurückgeben.

%Vor%

Der obige Code gibt Ihnen alle Farben, die existieren, ohne die Farbnamen zu wiederholen. Daher sollten Sie eine Ausgabe wie folgt erhalten:

%Vor%

Eine Alternative ist die Funktion uniquent () , die ein Array aller eindeutigen Werte in einer Serie. Um also ein Array aller eindeutigen Farben zu erhalten, würden Sie Folgendes tun:

%Vor%

Die Ausgabe ist ein Array, also würde beispielsweise print df['Color'].unique()[3] Ihnen Yellow geben.

    
Zythyr 04.07.2015 01:28
quelle
1

So geht's.

%Vor%

Der Kerngedanke hierbei ist: Wenn Sie eine Iteratorgruppe über eine Dataframe-Gruppe durchlaufen, erhalten Sie ein Zwei-Tupel von (Gruppenname, gefilterter Datenrahmen), wobei der gefilterte Datenrahmen nur Datensätze enthält, die dieser Gruppe entsprechen. .

    
ericmjl 04.03.2015 00:52
quelle

Tags und Links