首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算n行上和的百分比

计算n行上和的百分比
EN

Stack Overflow用户
提问于 2020-09-13 20:34:20
回答 1查看 46关注 0票数 0

我有一个如下所示的df。它有每个月1-12月的费用。我想要创建一个新的列,其中包含每12行(1-12个月)成本之和的百分比。因此,它将取12行的总和,并从成本值中计算百分比。我真的不知道从何说起这个。谢谢你的帮助!

输入:

代码语言:javascript
复制
| 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     |

想要的产出:

代码语言:javascript
复制
| 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%          |
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 20:41:57

试试transform

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63875313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档