猿问

获取熊猫数据框中总数的百分比

我有一个按以下方式配置的数据框:


date_string | type | amount


 2015-01-01 |  a   | 500


 2015-01-01 |  b   | 300


 2015-01-01 |  c   | 200


 2015-01-02 |  a   | 400


 2015-01-02 |  b   | 600


 2015-01-02 |  c   | 100

我希望添加一个按日期细分的百分比总数的新列,并得到如下内容:


date_string | type | amount | percent


 2015-01-01 |  a   | 500    | 0.5


 2015-01-01 |  b   | 300    | 0.3


 2015-01-01 |  c   | 200    | 0.2


 2015-01-02 |  a   | 300    | 0.3


 2015-01-02 |  b   | 600    | 0.6


 2015-01-02 |  c   | 100    | 0.1


繁花如伊
浏览 118回答 2
2回答

胡子哥哥

使用GroupBy.transformwith sum,除以原始列除以Series.div:df['percent'] = df['amount'].div(df.groupby('date_string')['amount'].transform('sum'))print (df)  date_string type  amount   percent0  2015-01-01    a     500  0.5000001  2015-01-01    b     300  0.3000002  2015-01-01    c     200  0.2000003  2015-01-02    a     400  0.3636364  2015-01-02    b     600  0.5454555  2015-01-02    c     100  0.090909

鸿蒙传说

这将工作import numpy as npdf.groupby(['amount', 'date_string']).sum().transform(lambda x: x/np.sum(x))
随时随地看视频慕课网APP

相关分类

Python
我要回答