【问题标题】:How to count number of rows per group greater than the average of that group in pandas group by?如何计算每组的行数大于熊猫组中该组的平均值?
【发布时间】:2018-12-27 03:14:32
【问题描述】:

我有一个数据框 df,我使用其中的几列来分组:

df[['col1', 'col2', 'col3', 'col4']].groupby(['col1', 'col2']).agg(['mean', 'count'])

通过上述方式,我得到了我需要的表格(数据框)。缺少的是一个附加列,其中包含每组中大于该组平均值(平均值)的行数。事实上我想要这样的东西:

col1  col2 mean   count  above_Mean
A      E    4      10     6    
       F    3      20     4 
B      G    7      30     15

我尝试了上面的 return 命令,它给了我除了上述每组的平均计数之外的所有内容。

df[['col1', 'col2', 'col3', 'col4']].groupby(['col1', 'col2']).agg(['mean', 'count'])

输出:

col1  col2 mean   count  above_Mean
A      E    4      10     6    
       F    3      20     4 
B      G    7      30     15

【问题讨论】:

  • 为什么你的输出只有一列的平均值和计数,而它应该有 2 列?你想总结它们吗?

标签: python pandas


【解决方案1】:

您还可以使用lambda 函数进行聚合,如下所示:

df.groupby(['col1', 'col2']).agg(['mean', 'count', 
                                  lambda x: (x > x.mean()).sum()])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2019-04-16
    • 2015-03-26
    相关资源
    最近更新 更多