我对熊猫还很陌生,所以我希望这将是一个简单的答案(我也感谢所有指向数据框设置的指针)
假设我有以下DataFrame:
D = pd.DataFrame({ i:{ "name":str(i), "vector": np.arange(i,i+10), "sq":i**2, "gp":i%3 } for i in range(10) }).T gp name sq vector 0 0 0 0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 1 1 1 1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2 2 2 4 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 3 0 3 9 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 4 1 4 16 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 5 2 5 25 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] 6 0 6 36 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] 7 1 7 49 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 8 2 8 64 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17] 9 0 9 81 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
现在,我想按“ gp”分组并获取“ vector”的均值
我试过了
D.groupby('gp').mean()
乃至
D.groupby('gp').agg( np.mean )
但我收到一个错误,没有要聚合的“数字类型”。那么np.arrays在熊猫中不起作用吗?
对我来说,它有效:
D.groupby('gp').apply(lambda x: x.vector.mean().mean())
我取两次平均值,因为您想要向量均值的均值组值(不是吗?)。
Out[98]: gp 0 9.0 1 8.5 2 9.5 dtype: float64
如果要使用均值向量,则只需取一次均值。