In Pandas gibt es so etwas wie eine GroupBy.get_group, aber mit einem optionalen Standardwert?

9

Ich habe einen DataFrame-df, den ich gruppiert habe. Ich bin auf der Suche nach einer Funktion, die get_group (name) ähnlich ist, außer dass ein KeyError, wenn der Name nicht existiert, einen leeren DataFrame (oder einen anderen Wert) zurückgibt, ähnlich wie dict.get funktioniert:

%Vor%

Gibt es schon eine Funktion, die das bietet?

Bearbeiten:

In vielerlei Hinsicht wird das GroupBy-Objekt durch ein dict (.indicies, .groups) repräsentiert, und diese "get with default" -Funktionalität war Kern genug für das Konzept eines dict, dass es in der Python-Sprache selbst enthalten ist. Es schien, dass, wenn ein dict-like Ding nicht mit Standard bekommen, vielleicht verstehe ich es nicht richtig? Warum sollte eine Diktat-ähnliche Sache nicht mit der Standardfunktion fertig werden?

Ein abgekürztes Beispiel für das, was ich tun möchte, ist:

%Vor%

Natürlich könnte ich eine Funktion erstellen, und ich könnte, es schien nur, dass, wenn ich so weit aus dem Weg gehen muss, ich vielleicht nicht das GroupBy-Objekt so verwenden möchte, wie es beabsichtigt war:

%Vor%     
Zach Dwiel 06.11.2013, 04:42
quelle

2 Antworten

3

Ich könnte mein eigenes get_group() wie folgt definieren

%Vor%     
waitingkuo 06.11.2013 18:15
quelle
0

Es ist nicht so schön, aber Sie könnten so etwas tun:

Setup:

%Vor%

Jetzt erfordert g.get_group , dass der übergebene Schlüssel in dem zugrunde liegenden groups dict existiert, aber Sie können auf dieses Mitglied selbst zugreifen, und tatsächlich ist es ein normales Python dict . Es übernimmt den Gruppenwert für die Sammlung von Indizes:

%Vor%

Wenn Sie diese zurückgegebenen Indizes in der Indexpositionsfunktion des Datenrahmens verwenden, können Sie Ihre Gruppen auf die gleiche Weise abrufen: get_group würde:

%Vor%

Da groups ein dict ist, können Sie die Methode get verwenden. Wenn Sie keinen Standardwert angeben, wird None zurückgegeben, was dazu führt, dass loc eine Ausnahme auslöst. Aber es akzeptiert eine leere Liste:

%Vor%

Es ist nicht so sauber wie das Bereitstellen eines Standardwerts für get_group (vielleicht sollten sie dieses Feature in einer zukünftigen Version hinzufügen), aber es funktioniert.

    
Mike 24.02.2017 14:24
quelle

Tags und Links