假设我有一个数据帧,如下所示:
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应用它。但我做不到。我走对了吗?谢谢
如果我理解正确,让我们尝试将melt
和groupby
与agg
一起使用
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