为了账号安全,请及时绑定邮箱和手机立即绑定

计算 n 行总和的百分比

计算 n 行总和的百分比

qq_遁去的一_1 2023-08-03 17:12:28
我有一个如下所示的 df 。它包含每月 1-12 月的费用。我想创建一个新列,其中包含每 12 行(第 1-12 个月)的成本总和的百分比。因此,它将获取 12 行的总和并计算成本中值的百分比。我真的不知道从哪里开始。谢谢你的帮助!输入:| Name     | Month  | Costs ||----------|--------|-------|| Painting | 1      | 1000  || Painting | 2      | 0     || Painting | 3      | 0     || Painting | 4      | 0     || Painting | 5      | 1000  || Painting | 6      | 0     || Painting | 7      | 0     || Painting | 8      | 0     || Painting | 9      | 1000  || Painting | 10     | 0     || Painting | 11     | 0     || Painting | 12     | 1000  || Repair   | 1      | 0     || Repair   | 2      | 0     || Repair   | 3      | 0     || Repair   | 4      | 2500  || Repair   | 5      | 0     || Repair   | 6      | 0     || Repair   | 7      | 5000  || Repair   | 8      | 0     || Repair   | 9      | 0     || Repair   | 10     | 2500  || Repair   | 11     | 0     || Repair   | 12     | 0     |想要的输出:| Name     | Period | Costs | Percentages ||----------|--------|-------|-------------|| Painting | 1      | 1000  | 25%         || Painting | 2      | 0     | 0%          || Painting | 3      | 0     | 0%          || Painting | 4      | 0     | 0%          || Painting | 5      | 1000  | 25%         || Painting | 6      | 0     | 0%          || Painting | 7      | 0     | 0%          || Painting | 8      | 0     | 0%          || Painting | 9      | 1000  | 25%         || Painting | 10     | 0     | 0%          || Painting | 11     | 0     | 0%          || Painting | 12     | 1000  | 25%         || Repair   | 1      | 0     | 0%          || Repair   | 2      | 0     | 0%          || Repair   | 3      | 0     | 0%          || Repair   | 4      | 2500  | 25%         || Repair   | 5      | 0     | 0%          || Repair   | 6      | 0     | 0%          || Repair   | 7      | 5000  | 50%         || Repair   | 8      | 0     | 0%          || Repair   | 9      | 0     | 0%          || Repair   | 10     | 2500  | 25%         || Repair   | 11     | 0     | 0%          || Repair   | 12     | 0     | 0%          |
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

尝试transform


df['PCT']=df['Costs']/df.groupby('Name')['Costs'].transform('sum')

df

Out[98]: 

        Name  Month  Costs   PCT

0   Painting      1   1000  0.25

1   Painting      2      0  0.00

2   Painting      3      0  0.00

3   Painting      4      0  0.00

4   Painting      5   1000  0.25

5   Painting      6      0  0.00

6   Painting      7      0  0.00

7   Painting      8      0  0.00

8   Painting      9   1000  0.25

9   Painting     10      0  0.00

10  Painting     11      0  0.00

11  Painting     12   1000  0.25

12    Repair      1      0  0.00

13    Repair      2      0  0.00

14    Repair      3      0  0.00

15    Repair      4   2500  0.25

16    Repair      5      0  0.00

17    Repair      6      0  0.00

18    Repair      7   5000  0.50

19    Repair      8      0  0.00

20    Repair      9      0  0.00

21    Repair     10   2500  0.25

22    Repair     11      0  0.00

23    Repair     12      0  0.00


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信