2016-08-08 7 views
2

私はnumpy.array arrとpandas.DataFrame dfを持っています。groupby numpy.arrayは、同じ長さのpandas.DataFrameのgroupbyに基づいています。

arrおよびdfは、同じ形状を有する。(x,y)

dfという1つの列でグループ化し、同じ形状のarrに影響を受ける行の変換を適用する必要があります。ここでは、明確にすることが

はおもちゃの例である:

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 

私はAによってグループdfにしたいと平均値を計算するが、dfを変換する代わりに、私はarrを変換することにしたいです。

だから私のような何かを得る:

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

が可能ということですか?高価なループはありませんか?これは、最初の列Aと集計meanによって、その後groupbyarrからDataFrameを作成する必要性のように見え、事前

答えて

2

感謝。最終valuesによってnumpy arrayに変換します

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

を私は探しています正確に何ですが、私は複数の列によってグループに何をしたい場合はそれ? – farhawa

+1

複数の列が必要な場合は、 '(pd.DataFrame(arr).groupby([df.A、df.B])、mean()。values)' – jezrael

+0

これはちょうどawsomeです! +1 – farhawa

関連する問題