Pandas: Unterschied zwischen dem größten und kleinsten Wert innerhalb der Gruppe

9

Gegeben ein Datenrahmen, der so aussieht

%Vor%

Ich möchte den Unterschied zwischen dem größten und dem kleinsten Wert in jeder Gruppe berechnen. Das heißt, das Ergebnis sollte

sein %Vor%

Was ist ein einfacher Weg, dies in Pandas zu tun?

Was ist ein schneller Weg, dies in Pandas für einen Datenrahmen mit etwa 2 Millionen Zeilen und 1 Million Gruppen zu tun?

    
David 21.10.2016, 19:04
quelle

3 Antworten

13

groupby/agg schneidet im Allgemeinen am besten ab, wenn Sie die integrierten Aggregatoren wie 'max' und 'min' nutzen. Um die Differenz zu erhalten, berechne zuerst die max und min und subtrahiere dann:

%Vor%

ergibt

%Vor%     
unutbu 21.10.2016 19:08
quelle
10

Verwenden von @unutbus df

pro Zeitpunkt
Die Lösung von unutbu eignet sich am besten für große Datenmengen

%Vor%

np.ptp docs gibt den Bereich von Array

Timing
klein df

groß df
df = pd.DataFrame(dict(GROUP=np.arange(1000000) % 100, VALUE=np.random.rand(1000000)))

groß df
viele Gruppen
df = pd.DataFrame(dict(GROUP=np.arange(1000000) % 10000, VALUE=np.random.rand(1000000)))

    
piRSquared 21.10.2016 19:19
quelle
4

Sie können groupby() , min() und max() :

verwenden %Vor%     
ASGM 21.10.2016 19:08
quelle

Tags und Links