如何在一个 groupby 列上执行聚合选项,给出两列输出

Posted

技术标签:

【中文标题】如何在一个 groupby 列上执行聚合选项,给出两列输出【英文标题】:How to perform aggregate options on one groupby column, giving two column outputs 【发布时间】:2015-08-13 10:03:22 【问题描述】:

我正在对 groupby 数据框执行一堆聚合统计信息。特别是对于一列ios_id,我想要一个计数和一个不同的计数。我不确定如何将其输出到具有不同名称的两个独立列。截至目前,不同的计数只是覆盖计数。

如何将 ios_id 列的不同计数和计数输出到两个单独的列?

df_new = df.groupby('video_id').agg("ios_id": np.count_nonzero,
                                     "ios_id": pd.Series.nunique,
                                     "feed_position": np.average,
                                     "time_watched": np.sum,
                                     "video_length": np.sum).sort('ios_id', ascending=False)

【问题讨论】:

ios_id 是对要对其执行统计的列的引用。如果我更改名称,则没有什么可参考的。 【参考方案1】:

这样的事情应该可以工作。注意 iOS_id 的嵌套字典结构。

df_new = df.groupby('video_id').agg("ios_id": "count": "count",
                                                "distinct": "unique",
                                     "feed_position": np.average,
                                     "time_watched": np.sum,
                                     "video_length": np.sum)

更多详情请参考Naming returned columns in Pandas aggregate function:

【讨论】:

以上是关于如何在一个 groupby 列上执行聚合选项,给出两列输出的主要内容,如果未能解决你的问题,请参考以下文章

pyspark:groupby 和聚合 avg 和 first 在多个列上

Pandas Groupby:同一列上的聚合,但总计基于两个不同的标准/数据框

如何对 hsqldb 中的大表执行高效的 group by / sum 聚合?

如何在两列上立方体,就好像它们是一列一样?

Elasticsearch JAVA api轻松搞定groupBy聚合

使用 GROUP BY 功能在 ADO.NET 中聚合函数