使用pandas GroupBy.agg()对同一列进行多个聚合

是否有一种内置方法可以将两个不同的聚合函数f1、f2应用于同一列df["returns"],而无需多次调用agg()

数据帧示例:

将熊猫作为pd导入
将日期时间导入为dt
将numpy作为np导入
pd.np.随机种子(0)
df=pd.DataFrame({
&日期:【范围(1,11)内x的日期(2012,x,1)】,
&“返回”:0.05*np.randn.randn(10),
&“假人”:名词重复(1,10)
}) 

语法上错误,但直觉上正确的做法是:

#假设为聚合定义了'f1'和'f2'。
df.groupby("dummy").agg({quot;returns":f1,"returns":f2})

显然,Python不允许重复键。是否有其他方式来表达对agg()的输入?也许元组列表[(列,函数)]可以更好地工作,允许对同一列应用多个函数?但是agg()似乎只接受字典

除了定义一个只应用其中两个函数的辅助函数外,还有其他解决方法吗?(无论如何,这对聚合是如何工作的?)

您只需将函数作为列表传递:

[20]on

:df.groupby(“dummy”).agg({“returns”:[np.mean,np.sum]})
Output[20]:
平均和
笨蛋
1      0.036901  0.369012

或作为字典:

[21]on

:df.groupby('dummy').agg({'returns':
{'Mean':np.Mean,'Sum':np.Sum})
Output[21]:
返回
平均和
笨蛋
1      0.036901  0.369012

发表评论