pandas中的groupby,对不同的列使用不同的函数[英] groupby in pandas with different functions for different columns

本文是小编为大家收集整理的关于pandas中的groupby,对不同的列使用不同的函数的处理方法,想解了pandas中的groupby,对不同的列使用不同的函数的问题怎么解决?pandas中的groupby,对不同的列使用不同的函数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

最好举例说明:

我想通过 col1 和 col2 聚合一个 DataFrame,对 col3 和 col4 的结果求和并在 col5 上平均结果

如果我只想对 col3-5 求和,我会使用 df.groupby(['col1','col2']).sum()

推荐答案

您可以为此使用 Groupby.agg()(或 Groupby.aggregate())方法.

aggregate() 函数可以接受字典作为参数,在这种情况下,它将键视为列名,将值视为用于聚合的函数.正如 文档中给出的 -

<块引用>

通过将 dict 传递给聚合,您可以对 DataFrame 的列应用不同的聚合.

例子-

import numpy as np
result = df.groupby(['col1','col2']).agg({'col3':'sum','col4':'sum','col5':np.average})

演示 -

In [50]: df = pd.DataFrame([[1,2,3,4,5],[1,2,6,7,8],[2,3,4,5,6]],columns=list('ABCDE'))

In [51]: df
Out[51]:
   A  B  C  D  E
0  1  2  3  4  5
1  1  2  6  7  8
2  2  3  4  5  6

In [52]: df.groupby(['A','B']).aggregate({'C':np.sum,'D':np.sum,'E':np.average})
Out[52]:
     C    E   D
A B
1 2  9  6.5  11
2 3  4  6.0   5

本文地址:https://www.itbaoku.cn/post/1728200.html