Tag: aggregate functions

将多个函数应用于多个groupby列

该文档展示了如何在输出列名称作为关键字的情况下,使用dict一次对groupby对象应用多个函数: In [563]: grouped['D'].agg({'result1' : np.sum, …..: 'result2' : np.mean}) …..: Out[563]: result2 result1 A bar -0.579846 -1.739537 foo -0.280588 -1.402938 但是,这只适用于系列groupby对象。 而且当一个字典同样通过DataFrame传递给一个组时,它期望这个键是该函数将被应用到的列名。 我想要做的是将多个函数应用于多个列(但某些列将被多次操作)。 此外, 一些函数将取决于groupby对象中的其他列 (如sumif函数)。 我目前的解决scheme是逐列,并执行类似上面的代码,使用lambdas函数依赖于其他行。 但是这需要很长时间(我认为遍历groupby对象需要很长时间)。 我将不得不改变它,这样我遍历整个groupby对象在一次运行,但我想知道是否有一个在pandas内置的方式做到这一点干净。 例如,我试过类似的东西 grouped.agg({'C_sum' : lambda x: x['C'].sum(), 'C_std': lambda x: x['C'].std(), 'D_sum' : lambda x: x['D'].sum()}, 'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), …) 但正如所料,我得到一个KeyError(因为如果从DataFrame调用agg ,键必须是一个列)。 是否有任何内置的方法来做我想做的事情,或者可能会添加这个function,或者我只需要手动遍历groupby? […]