Pandas 中的转换与聚合

Posted

技术标签:

【中文标题】Pandas 中的转换与聚合【英文标题】:Transform vs. aggregate in Pandas 【发布时间】:2017-04-18 21:11:01 【问题描述】:

在对 Pandas DataFrame 进行分组时,什么时候应该使用transform,什么时候应该使用aggregate?怎么做 它们在实践中的应用不同,你是哪一个 考虑更重要?

【问题讨论】:

【参考方案1】:

考虑数据框df

df = pd.DataFrame(dict(A=list('aabb'), B=[1, 2, 3, 4], C=[0, 9, 0, 9]))


groupby 是标准使用聚合器

df.groupby('A').mean()


也许您希望这些值在整个组中广播并返回与您开始时具有相同索引的内容。使用transform

df.groupby('A').transform('mean')

df.set_index('A').groupby(level='A').transform('mean')


agg 用于当您想要为不同的列运行特定的事情或在同一列上运行多个事情时。

df.groupby('A').agg(['mean', 'std'])

df.groupby('A').agg(dict(B='sum', C=['mean', 'prod']))

【讨论】:

非常棒的答案! 通过使用 agg 如何返回原始数据框 df 分解聚合列?

以上是关于Pandas 中的转换与聚合的主要内容,如果未能解决你的问题,请参考以下文章

利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

pandas ValueError:转换无法产生聚合结果

Pandas Cookbook -- 07 分组聚合过滤转换

pandas 学习 第4篇:序列的处理(应用聚合转换映射分组滚动扩展指数加权移动平均)

数据分析—Pandas 中的分组聚合Groupby 高阶操作

数据的分组与计算