使用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中文網其他相關文章!