使用 Pandas GroupBy.agg() 在同一列上进行多个聚合
在 pandas 中,GroupBy.agg() 可以方便地聚合通过对每一列应用函数来获取数据。然而,当将不同的函数应用于同一列时,有必要多次调用 agg()。
传统(不正确)方法:
直观简单的方法是be:
df.groupby("dummy").agg({ "returns": f1, "returns": f2 })
不幸的是,由于重复,这会导致错误键。
解决方案:
由于 agg() 需要一个字典,所以简单的解决方案是创建一个包含列名和函数列表的字典:
df.groupby("dummy").agg({ "returns": [f1, f2] })
这将产生一个具有两个聚合输出的多索引 DataFrame。
示例:
考虑以下 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) })
将均值和总和应用于“返回”列:
df.groupby("dummy").agg({ "returns": ["mean", "sum"] })
这将产生:
returns mean sum dummy 1 0.036901 0.369012
以上是如何使用 Pandas GroupBy.agg() 对同一列执行多个聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!