2014-01-18 99 views
1
類別

內的百分比我有一個數據幀像這樣的(除了更多的行和大小,說):熊貓:

size amount 
1 big  1 
2 big  9 
3 small  3 
4 small  1 

,我想獲得這樣的數據幀,其中amountPct是金額除以相同大小的金額總和。

size amountPct 
1 big  0.10 
2 big  0.90 
3 small  0.75 
4 small  0.25 

我可以重塑數據幀,將通過總和爲每個尺寸,然後重塑其返回到原來的形狀做到這一點,但有這樣做的更優雅的方式?

PS:我問了同樣的問題R,但現在我想大熊貓的答案!

+0

這是問題中的R版本:http://stackoverflow.com/questions/21195651/percentage-within-category – nicolaskruchten

回答

2

怎麼是這樣的:

df = pd.DataFrame({'size':['big', 'big', 'small', 'small'], 'amount':[1, 9, 3, 1]}) 
df['pct'] = df.groupby('size')['amount'].apply(lambda x: x.astype(float)/x.sum()) 
+0

在0.13.1,這將被列入通過排名(將更快):https://github.com/pydata/pandas/pull/5978 – Jeff

+0

所以這個作品,謝謝,但我無法理解爲什麼...你能解釋一下嗎?在'lambda'中,什麼是'x'? – nicolaskruchten

+0

@nicolaskruchten在這種情況下x是'金額'列 – EdChum