group by 分组和平均

新手上路,请多包涵

我有一个这样的数据框:

 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

我不知道如何在熊猫中做到这一点,有人可以帮忙吗?

原文由 UserYmY 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 429
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 上使用 ['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

原文由 Zero 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏