pandas 中的聚合和计数

Posted

技术标签:

【中文标题】pandas 中的聚合和计数【英文标题】:aggregating and counting in pandas 【发布时间】: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()

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

【问题讨论】:

【参考方案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 的代码。

以上是关于pandas 中的聚合和计数的主要内容,如果未能解决你的问题,请参考以下文章

在 Python Pandas 中聚合组并从某个计数中吐出百分比

Pandas 数据透视表:按特定字符串的计数聚合函数

Pandas 数据框将数据聚合为每组的计数

用 Pandas 计数和排序

Pandas 中的聚合

Pandas 中的聚合