簡體   English   中英

Pandas Groupby-計算每組總價值的百分比

[英]Pandas Groupby - Calculate percentage of values per group total value

按聲明,我有這個熊貓小組:

df['teams'].groupby(train_sub['outcome']).value_counts()

返回如下內容:

outcome | teams 
--------|----------------|-----
  win   | Man utd        | 120
        | Chelsea        | 75
        | Arsenal        | 10
--------|----------------|------
  loss  | Man utd        | 30
        | Chelsea        | 75
        | Arsenal        | 150

對於每個團隊,我想顯示每個結果占團隊總數(而不是數據框中的總數)的百分比。 所以像這樣:

outcome | teams 
--------|----------------|-----
  win   | Man utd        | 0.80
        | Chelsea        | 0.5
        | Arsenal        | 0.0625
--------|----------------|------
  loss  | Man utd        | 0.20
        | Chelsea        | 0.5
        | Arsenal        | 0.9375

請問我如何得到這個結果?

像您一樣復制數據集:

df = pd.DataFrame()
df['outcome'] = ['win', 'win', 'win', 'loss', 'loss', 'loss']
df['teams'] = ['manu', 'chelsea', 'arsenal', 'manu', 'chelsea', 'arsenal']
df['points'] = [120, 75, 10, 30, 75, 150]
grouped = df.groupby(['outcome', 'teams'])['points'].sum()

我的grouped變量現在看起來像您的變量。

                 points
outcome teams          
loss    arsenal     150
        chelsea      75
        manu         30
win     arsenal      10
        chelsea      75
        manu        120


解:

grouped您的情況進行groupeddf['teams'].groupby(train_sub['outcome']).value_counts() 因此,只需:

grouped / grouped.groupby(level = 1).sum()

輸出:

outcome teams    points     
loss    arsenal  0.9375
        chelsea  0.5000
        manu     0.2000
win     arsenal  0.0625
        chelsea  0.5000
        manu     0.8000

暫無
暫無

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

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