分组依据和平均值
- 2024-12-24 08:55:00
- admin 原创
- 68
问题描述:
我有一个像这样的数据框:
cluster org time
1 a 8
1 a 6
2 h 34
1 c 23
2 d 74
3 w 6
我想计算每个组织每个集群的平均时间。
预期结果:
cluster mean(time)
1 15 #=((8 + 6) / 2 + 23) / 2
2 54 #=(74 + 34) / 2
3 6
我不知道如何在 Pandas 中做到这一点,有人可以帮忙吗?
解决方案 1:
如果您希望先对组合取平均值['cluster', 'org']
,然后对cluster
组取平均值,则可以使用:
In [59]: (df.groupby(['cluster', 'org'], as_index=False).mean()
.groupby('cluster')['time'].mean())
Out[59]:
cluster
1 15
2 54
3 6
Name: time, dtype: int64
如果您只想要组的平均值cluster
,那么您可以使用:
In [58]: df.groupby(['cluster']).mean()
Out[58]:
time
cluster
1 12.333333
2 54.000000
3 6.000000
您也可以先使用groupby
on ['cluster', 'org']
,然后使用mean()
:
In [57]: df.groupby(['cluster', 'org']).mean()
Out[57]:
time
cluster org
1 a 438886
c 23
2 d 9874
h 34
3 w 6
解决方案 2:
我只需这样做,它实际上遵循了你想要的逻辑:
df.groupby(['org']).mean().groupby(['cluster']).mean()
解决方案 3:
pivot_table()
另一个可能的解决方案是使用然后采取重塑数据框mean()
。请注意,必须通过aggfunc='mean'
(此平均值time
为cluster
和org
)。
df.pivot_table(index='org', columns='cluster', values='time', aggfunc='mean').mean()
另一种可能性是使用第一个之后level
的参数进行聚合:mean()
`groupby()`
df.groupby(['cluster', 'org']).mean().mean(level='cluster')
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD