【问题标题】:How do I find the mean of each row of grouped columns in a database如何找到数据库中每行分组列的平均值
【发布时间】:2021-01-31 18:16:04
【问题描述】:

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

第一组

第 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) 也不起作用

【问题讨论】:

  • ">获取每组每行的平均值。"那有什么意思?你想要什么,每列的平均值?
  • @SadafShafi 我想要每行的平均值不是数据框的平均值,而是从该数据框创建的组的平均值

标签: python pandas dataframe group-by pandas-groupby


【解决方案1】:

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

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
    

【讨论】:

  • 谢谢,我试过这样做,但我得到了这个错误:'DataFrame' object has no attribute 'to_numpy'
  • @meerakapoor - 您可以使用s1 = df.groupby(['a','b']).apply(lambda x: np.mean(x.values)) 代替s1 = df.groupby(['a','b']).apply(lambda x: np.mean(x.to_numpy()))
猜你喜欢
  • 1970-01-01
  • 2021-03-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2013-02-11
  • 2022-11-16
相关资源
最近更新 更多