Python Pandas GroupBy-Holen Sie sich eine Liste der Gruppen
Ich habe eine code-Zeile:
g = x.groupby('Color')
Den Farben Rot, Blau, Grün, Gelb, Lila, Orange und Schwarz. Wie gebe ich diese Liste? Für ähnliche Attribute, die ich x verwenden.Attribut und es funktioniert gut, aber x.Farbe nicht die gleiche Weise Verhalten.
- Du willst also eine Liste der eindeutigen Werte in der Farbe?
- Sie können die eindeutigen Werte aus dem orig df, keine Notwendigkeit, Gruppe
x['Color'].unique()
- Der x['Farbe'].einzigartige ended up being genau das, was ich suchte. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist viel einfacher Weg, es zu tun:
By doing
groupby()
pandas gibt Sie einen dict-gruppierte DFs.Sie können leicht Holen Sie sich die key-Liste dieses dict von python eingebaute Funktion
keys()
.pandorable
als andere Antworten. 🙂groupby()
nicht wieder einedict
, aber einDataFrameGroupBy
Objekt.Wenn Sie kümmern sich nicht um die Reihenfolge der Gruppen, Yanqi Ma die Antwort wird funktionieren:
Beachten Sie jedoch, dass
g.groups
ist ein Wörterbuch, so die Schlüssel sind grundsätzlich ungeordnet! Dies ist auch dann der Fall, wenn Siesort=True
auf diegroupby
Methode zum Sortieren der Gruppen, die standardmäßig true ist.Diese tatsächlich mich etwas schwer, wenn es führte zu einer anderen, um auf zwei Plattformen, vor allem, da ich mit
list(g.groups)
, so war es nicht offensichtlich, dassg.groups
war eindict
.Meiner Meinung nach, der beste Weg, dies zu tun ist, um die Vorteile der Tatsache, dass die GroupBy-Objekt einen iterator, und verwenden Sie eine list-comprehension Rückkehr der Gruppen in der Reihenfolge, wie Sie existieren in den GroupBy-Objekt:
Es ist ein bisschen weniger lesbar, aber dieser wird immer wieder die Gruppen in der richtigen Reihenfolge.
Es ist mein Verständnis, dass Sie einen Daten-Frame enthält ein Vielfaches Spalten. Eine der Spalten ist "Farbe", die verschiedene Arten von Farben. Sie wollen, um eine Liste der einzigartigen Farben, die es gibt.
Den oben angegebenen code der Ihnen alle Farben, die existieren, ohne die Wiederholung der Farben-Namen. Also, sollten Sie eine Ausgabe wie:
Alternative ist die unique() Funktion gibt ein array zurück, der alle eindeutigen Werte in einer Reihe. Somit erhalten Sie ein array von einzigartigen Farben, die Sie würden tun:
Die Ausgabe ist ein array, so zum Beispiel
print df['Color'].unique()[3]
würde IhnenYellow
.Hier ist, wie es zu tun.
Die Kern-Idee ist diese hier: wenn Sie Durchlaufen ein dataframe groupby-iterator, Sie zurück zu bekommen ein zwei-Tupel von (name der Gruppe, gefilterte Daten-frame), wo die gefilterten Daten-frame enthält nur die Datensätze der entsprechenden Gruppe).
numpy.unique(x[col_name].values)