是否有一种pandas内置的方法,可以将两个不同的聚合函数f1, f2
应用于同一列df["returns"]
,而无需多次调用agg()
?
示例dataframe:
import pandas as pd
import datetime as dt
import numpy as np
pd.np.random.seed(0)
df = pd.DataFrame({
"date" : [dt.date(2012, x, 1) for x in range(1, 11)],
"returns" : 0.05 * np.random.randn(10),
"dummy" : np.repeat(1, 10)
})
语法上错误,但直觉上正确的做法是:
# Assume `f1` and `f2` are defined for aggregating.
df.groupby("dummy").agg({"returns": f1, "returns": f2})
显然,Python不允许重复键。是否有其他方式来表示agg()
的输入?也许一个元组[(column, function)]
列表会更好,以允许多个函数应用于同一列?但是agg()
似乎只接受字典。
除了定义一个辅助函数来应用它里面的两个函数,还有什么解决方法吗?(这在聚合中是如何工作的呢?)