是否有一种内置方法可以将两个不同的聚合函数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