如何使用pandas groupby函数将函数应用于numpy数组

发布于 2021-01-29 15:01:16

我对熊猫还很陌生,所以我希望这将是一个简单的答案(我也感谢所有指向数据框设置的指针)

假设我有以下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在熊猫中不起作用吗?

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对我来说,它有效:

    D.groupby('gp').apply(lambda x: x.vector.mean().mean())
    

    我取两次平均值,因为您想要向量均值的均值组值(不是吗?)。

    Out[98]: 
    gp
    0     9.0
    1     8.5
    2     9.5
    dtype: float64
    

    如果要使用均值向量,则只需取一次均值。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看