【发布时间】:2020-06-10 17:16:21
【问题描述】:
pandas.Dataframe.groupby(['date','some_category']).agg([np.sum, np.size]) 为每个总和列生成一个重复的计数。传递聚合函数列表时是否可以只输出一个计数列?
a = df_all.groupby(['date','some_category']).sum()
b = df_all.groupby(['date','some_category']).size()
pd.concat([a,b], axis=1)
基本上是我想要的,但看起来很尴尬。
【问题讨论】:
-
df.groupby('some_category')[column].agg([np.sum, np.size]) -
df_all = pd.DataFrame({'some_category': ['a','a','a','b','b'], 'x': [0,1,2,3,4], 'y': [5,5,6,7,7]}) df_all.groupby('some_category').agg({'x': [np.sum, np.size], 'y': np.sum})这不是一个完整的答案,所以我将它放在评论中。你可以做这样的事情,你明确地为你想要的每一列命名操作,但与你的例子相比,对于许多列来说,这些感觉就像你要做很多工作。 -
感谢@Alexander,但这似乎给出了相同的结果。我已经编辑了我的帖子,因为问题似乎来自多个字段的分组。我的对象列表分为 3 个类别,我按日期和类型总结了 x 和 y 维度。我还想在输出中包含每个日期/类型的计数,但不要重复 x 和 y 的(相同)计数。
-
请提供一个可重现的例子。
-
感谢@clesiemo3,这看起来像是我需要的基本解决方案。我想我想看到的是 agg 函数中的 'include_count=True' 标志或其他避免与其他聚合一起计算的方式。也许这存在于熊猫的其他地方。
标签: python numpy aggregate pandas-groupby