python - 如何找到数据库中每行分组列的平均值
问题描述
我根据名称对列进行了分组,每组有 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) 也不起作用
解决方案
如果需要处理每行的值,请使用:
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
推荐阅读
- invoice - Odoo 13:如何在发票中打印 move_id(付款号)?
- r - 如何从数据框中删除行而不重写它?
- python-3.x - 从 s3 存储桶获取旧文件路径
- javascript - Angular按名称获取类的属性
- google-bigquery - 如何在 Jupyter 笔记本中调用 BigQuery 函数
- sql - 如何在没有 à 分组的情况下将虚构行添加到 Oracle 中的 SQL 结果
- coq - 如何在 Coq 的列表末尾进行归纳
- sql - SQL Server 复合唯一键性能
- python - 0D0D 在 binascii.hexlify(file.read()) 上变成 0D
- sql - 在 Oracle 数据库中使用 Oracle SQL*Plus 文件 [Intellij]