Groupby一个numpy.array基于pandas.DataFrame的groupby,长度相同

时间:2016-08-08 13:11:50

标签: python arrays pandas numpy dataframe

我有一个numpy.array arr和一个pandas.DataFrame df

arrdf具有相同的形状(x,y)

我需要按df的一列进行分组,然后应用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

我希望按dfA进行分组,然后计算平均值,而不是转换df我希望arr进行转换。

所以我得到了类似的东西:

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

这可能吗?没有昂贵的循环?

提前致谢

1 个答案:

答案 0 :(得分:2)

看起来需要先从DataFrame创建arr,然后按Agroupby再创建mean。最后通过values将其转换为numpy array

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