2017-05-10 6 views
1

Ich habe ein Datenrahmen wie diesegroupby und Perzentilberechnung in Pandas Datenrahmen

name event spending 
abc A  500 
abc B  300 
abc C  200 
xyz A  2000 
xyz D  1000 

Also muss ich einen groupby Namen und Ereignis und entsprechenden Perzentil berechnen ... so ausgegeben werden soll wie

name event spending_percentile 
abc A  50% 
abc B  30% 
abc C  20% 
xyz A  66.67% 
xyz D  33.33% 

Bitte führen Sie das im Pandas Dataframe durch.

+1

verwandt und wahrscheinlich Betrogene: https://stackoverflow.com/questions/39388820/pandas-groupwise-percentage – EdChum

+0

@EdChum: sorry, nicht richtig google (wurde in Eile) .. Danke, dieser Link hilft. – Satya

Antwort

2

Es scheint, Sie brauchen transform:

df['spending_percentile'] = df['spending'].div(df.groupby('name')['spending'] 
               .transform(sum)).mul(100) 
print (df) 
    name event spending spending_percentile 
0 abc  A  500   50.000000 
1 abc  B  300   30.000000 
2 abc  C  200   20.000000 
3 xyz  A  2000   66.666667 
4 xyz  D  1000   33.333333 
+0

Große Hilfe..Danke @jezrael – Satya