2016-08-08 24 views
2

Ich habe eine numpy.array arr und eine pandas.DataFrame df.Groupby eine numpy.array basierend auf groupby pandas.DataFrame mit der gleichen Länge

arr und df haben die gleiche Form (x,y).

Ich muss nach einer Spalte von df gruppieren und die Transformation der betroffenen Zeilen auf arr anwenden, die die gleiche Form haben.

klar zu sein, hier ist ein Spielzeug Beispiel:

arr = 
    0 1 12 3 
    2 5 45 47 
    3 19 11 111 

df = 
    A B C D 
0 0 1 2 3 
1 4 5 6 7 
2 4 9 10 11 

I Gruppe df von A und berechnen den Mittelwert aber anstelle wollen df transformieren möchte ich arr umgewandelt werden.

So bekomme ich so etwas wie:

arr = 
     0  1   12   3 
     (2+3)/2 (5+19)/2 (45+11)/2 (47+111)/2 

Ist das möglich? Ohne teure Loops?

Vielen Dank im Voraus

Antwort

2

Es ist wie Notwendigkeit sieht erste DataFrame aus arr erstellen, dann groupby durch Spalte A und Aggregat mean. konvertieren Last es numpy array von values:

print (pd.DataFrame(arr).groupby(df.A).mean().values) 
[[ 0. 1. 12. 3. ] 
[ 2.5 12. 28. 79. ]] 
+0

Das ist genau das, was ich suche, aber was ist, wenn ich nach mehreren Spalten gruppieren möchten? – farhawa

+1

Wenn mehrere Spalten benötigt werden, versuchen Sie '(pd.DataFrame (arr) .groupby ([df.A, df.B]). Mean(). Werte)' – jezrael

+0

Das ist einfach fantastisch! +1 – farhawa