[英]Applying cumulative mean function to a grouped object
我有一個 DataFrame df
,其中每條記錄代表一場足球比賽。 團隊將不止一次出現。 我需要為每個團隊得分計算某種滾動平均值(嗯,不完全是字母的滾動平均值)。
date home away score_h score_a
166 2013-09-01 Fulham Chelsea 0 0
167 2013-09-03 Arsenal Everton 0 2
164 2013-09-05 Arsenal Swansea 5 1
165 2013-09-06 Fulham Norwich 0 1
163 2013-09-18 Arsenal Swansea 0 0
我需要計算的是每支球隊(主客場)的平均得分。
為簡潔起見,我們只做 home 列:
grouped = df.groupby('home')
grouped = grouped.sort_index(by='date') # rows inside groups must be in asc order
這導致:
date home away score_h score_a
home
Arsenal 167 2013-09-03 Arsenal Everton 0 2
164 2013-09-05 Arsenal Swansea 5 1
163 2013-09-18 Arsenal Swansea 0 0
Fulham 166 2013-09-01 Fulham Chelsea 0 0
165 2013-09-06 Fulham Norwich 0 1
問題從這里開始
現在,我需要計算團隊的“滾動平均值”。 讓我們為名為Arsenal
的組手動完成。 最后,我們應該得到 2 個額外的列,我們稱它們為: rmean_h
和rmean_a
。 組中的第一個記錄 ( 167
) 得分為0
和2
。 它們的rmean
分別為0
和2
。 對於組中的第二條記錄 ( 164
),rmeans 將是(0+5)/2 = 2.5
和(2+1) / 2 = 1.5
,對於第三條記錄, (0+5+0)/3 = 1.66
和(2+1+0)/3 = 1
。
我們的 DataFrame 現在應該如下所示:
date home away score_h score_a rmean_h rmean_a
home
Arsenal 167 2013-09-03 Arsenal Everton 0 2 0 2
164 2013-09-05 Arsenal Swansea 5 1 2.5 1.5
163 2013-09-18 Arsenal Swansea 0 0 1.66 1
Fulham 166 2013-09-01 Fulham Chelsea 0 0
165 2013-09-06 Fulham Norwich 0 1
我想對我的數據進行這些計算,請問您有什么建議嗎?
您可以將expanding_mean
(請參閱文檔 )應用於每個組:
grouped = df.sort(columns='date').groupby('home')
grouped['score_h'].apply(pd.expanding_mean)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.