能否在 Pandas 数据框中使用 Groupby 并计算所有列的平均值?

3
假设我有一个类似这样的数据框:
Category Col1 Col2 Col3 Col4 Col5

Footwear    35   55   67   87   94

Apparels    56   65   54   84   77

Footwear    87   85   56   95   35

Handbags    83   62   724  51   62

Handbags    61   512  21   58   78

Apparels 50   62   172  77   5

现在,我想找到不同类别的平均值和标准差,但不是分别针对不同的列,而是每个类别一个平均值和一个标准差。因此,我希望输出结果如下:

Category mean stdev

Footwear xxx   aaa

Apparels yyy   bbb

Handbags zzz   ccc

我不能仅使用axis=1的mean函数先在列上计算均值和标准差, 然后再为类别进行Groupby操作, 这将产生不正确的结果。

因此,我的困境在于我想同时在行和列上聚合执行groupby。

我有一种感觉,一个用户定义的函数可以通过lambda聚合并与Groupby一起应用。但是我无法做到这一点,我是否在正确的轨道上?谢谢!

1个回答

3

如果我理解正确,让我们尝试使用 meltgroupbyagg

df1 = pd.melt(df,id_vars='Category').groupby('Category').agg(mean=('value','mean'),
                                                             std=('value','std'))

print(df1)

           mean         std
Category                   
Apparels   70.2   41.983595
Footwear   69.6   23.291391
Handbags  171.2  241.295946

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接