Python 获取数据帧中总数的百分比
我以以下方式配置了一个数据帧:Python 获取数据帧中总数的百分比,python,pandas,Python,Pandas,我以以下方式配置了一个数据帧: 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 |
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
与sum一起使用,原始列除以:
这会奏效的
import numpy as np
df.groupby(['amount', 'date_string']).sum().transform(lambda x: x/np.sum(x))
对于其他用户。与在转换中使用lambda相反,在本例中使用一个可用字符串选项“sum”时,转换非常有效。因此,更好的做法是像@jezrael所做的那样,将当前的“金额”列除以转换“总和”的结果。这正是我所要寻找的,而且有效!我会尽快接受你的答复minutes@piRSquared-谢谢。他的号码让我觉得df['percent']=df.amount/1000可能是
import numpy as np
df.groupby(['amount', 'date_string']).sum().transform(lambda x: x/np.sum(x))