groupby在pandas中具有不同列的不同功能

时间:2015-10-19 14:58:29

标签: python pandas

最好通过示例说明:

我希望按col1col2汇总数据框架,对col3col4的结果进行求和,并对col5

的结果进行求和

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

1 个答案:

答案 0 :(得分:3)

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

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

中所述
  

通过将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