我有一个像这样的数据框(除了有更多的行和大小,比如说):

   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提出了同样的问题,但现在我想为Pandas回答!

最佳答案

这样的事情怎么样:

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())

关于python - Pandas :类别中的百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21206401/

10-12 22:02