【问题标题】:aggregating and counting in pandaspandas 中的聚合和计数
【发布时间】:2021-10-01 12:36:15
【问题描述】:

对于下面的df

group  participated
A           1
A           1
B           0
A           0
B           1
A           1
B           0
B           0

我想计算组列中每个值的参与列中的值总数(groupby-count),然后计算每个组中有多少个 1

类似

group tot_participated   1s
A         4              3
B         4              1

我知道第一部分很简单,可以通过简单的方式完成

grouped_df=df.groupby('group').count().reset_index()

无法理解第二部分。任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas group-by count


    【解决方案1】:

    您可以使用如下聚合跟随 groupby:

    grp_df = df.groupby('group', as_index=False).agg({'participated':['count','sum']})
    grp_df.columns = ['group','tot_participated','1s']
    grp_df.head()
    

    在同一列上使用具有多个聚合函数的 .agg 需要注意的是,会创建一个多列索引。这可以通过在第 2 行中重置列名来解决。

    【讨论】:

    • 谢谢。你介意告诉我如何计算 0 的数量吗?我只问因为我没有看到第 1 行中提到值 1,并且无法理解 sum 函数如何计算 1 并忽略 0
    • 在第 1 行,我们对每个 'group' 的 'participated' 列执行 2 次聚合,首先我们计算存在的值的数量,然后我们对组中的所有值求和(在此case 与计算每组中有多少个 1 相同)。这有帮助吗?我很快就会更新计数 0 的代码。
    猜你喜欢
    • 2019-09-18
    • 2015-08-11
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2021-07-17
    • 1970-01-01
    • 2015-08-23
    相关资源
    最近更新 更多