我可以在Pandas数据帧上应用Groupby并计算所有列的平均值吗



假设我有一个数据帧,如下所示:

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

我不能只使用轴=1的均值函数,然后使用类别的Groupby来计算列的均值和std。这会产生不正确的结果。

所以我的困境是,我想执行groupby,同时跨行和列进行聚合。

我有一种感觉,用户定义的函数可以做到这一点,通过lambda聚合和Groupby应用它。但我做不到。我走对了吗?谢谢

如果我理解正确,让我们尝试将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

最新更新