首页 > 解决方案 > 如何找到数据库中每行分组列的平均值

问题描述

我根据名称对列进行了分组,每组有 3 列。我无法获得每组每行的平均值。例如

第 1 组

第 1 行:1 2 3
第 2 行:4 5 6
第 3 行:7 8 9

第 2 组

第 1 行:4 2 3
第 2 行:4 8 6
第 3 行:7 8 12
输出

组 1
---------平均
第 1 行:2
第 2 行:5
第 3 行:8

第 2 组
---------平均
第 1 行:3
第 2 行:6
第 3 行:9

当我应用 c=grouped.agg('mean',axis=0) 时,我收到此错误“Numpy 操作对 groupby 无效。请改用 .groupby(...).mean()”

Groupby.mean(axis=0) 也不起作用

标签: pythonpandasdataframegroup-bypandas-groupby

解决方案


如果需要处理每行的值,请使用:

s = df.set_index(['a','b']).mean(axis=1)
print (s)
a        b    
Group 1  row 1    2.0
         row 2    5.0
         row 3    8.0
Group 2  row 1    3.0
         row 2    6.0
         row 3    9.0
dtype: float64

如果需要mean每组的值,请使用此技巧:

s1 = df.groupby(['a','b']).apply(lambda x: np.mean(x.to_numpy()))
#for old pandas versions
#s1 = df.groupby(['a','b']).apply(lambda x: np.mean(x.values))
print (s1)
a        b    
Group 1  row 1    2.0
         row 2    5.0
         row 3    8.0
Group 2  row 1    3.0
         row 2    6.0
         row 3    9.0
dtype: float64

样品

print (df)
         a      b  c  d   e
0  Group 1  row 1  1  2   3
1  Group 1  row 2  4  5   6
2  Group 1  row 3  7  8   9
3  Group 2  row 1  4  2   3
4  Group 2  row 2  4  8   6
5  Group 2  row 3  7  8  12
    

推荐阅读