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