簡體   English   中英

將累積平均值 function 應用於分組 object

[英]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_hrmean_a 組中的第一個記錄 ( 167 ) 得分為02 它們的rmean分別為02 對於組中的第二條記錄 ( 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)

對於 pandas 1.4.3,您可以使用:

grouped = df.sort(columns='date').groupby('home')
grouped['score_h'].expanding().mean()

閱讀有關文檔的更多信息: 擴展擴展 window

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM