【发布时间】:2021-05-11 21:36:39
【问题描述】:
我对每个 ID 都有一个这样的数据集;
| Months | ID | AnnualSalaryChange |
|---|---|---|
| 2020-12-01 | 1 | 0 |
| 2020-11-01 | 1 | 1 |
| 2020-10-01 | 1 | 0 |
| 2020-09-01 | 1 | 0 |
| 2020-08-01 | 1 | 0 |
| 2020-07-01 | 1 | 0 |
| 2020-06-01 | 1 | 0 |
| 2020-05-01 | 1 | 0 |
| 2020-04-01 | 1 | 0 |
| 2020-03-01 | 1 | 1 |
| 2020-02-01 | 1 | 0 |
| 2020-01-01 | 1 | 0 |
| 2019-12-01 | 1 | 1 |
| 2019-11-01 | 1 | 0 |
| 2019-10-01 | 1 | 0 |
| 2019-09-01 | 1 | 0 |
| 2019-08-01 | 1 | 0 |
| 2019-07-01 | 1 | 0 |
| 2019-06-01 | 1 | 0 |
| 2019-05-01 | 1 | 0 |
| 2019-04-01 | 1 | 0 |
| 2019-03-01 | 1 | 0 |
| 2019-02-01 | 1 | 1 |
我想要一个像 AnnualSalaryChangeSumFor12Months 这样的列。它应该是每行过去 12 个月(可变)的年薪变化值的累积总和。对于每一行,它应该回到 12 个月前,并将截至当时的值相加。如果没有 12 行要求和,则可以对剩余的行求和。
| Months | ID | AnnualSalaryChange | AnnualSalaryChangeSumFor12Months |
|---|---|---|---|
| 2020-12-01 | 1 | 0 | 2 |
| 2020-11-01 | 1 | 1 | 3 |
| 2020-10-01 | 1 | 0 | 2 |
| 2020-09-01 | 1 | 0 | 2 |
| 2020-08-01 | 1 | 0 | 2 |
| 2020-07-01 | 1 | 0 | 2 |
| 2020-06-01 | 1 | 0 | 2 |
| 2020-05-01 | 1 | 0 | 2 |
| 2020-04-01 | 1 | 0 | 2 |
| 2020-03-01 | 1 | 1 | 2 |
| 2020-02-01 | 1 | 0 | 1 |
| 2020-01-01 | 1 | 0 | 2 |
| 2019-12-01 | 1 | 1 | 2 |
| 2019-11-01 | 1 | 0 | 1 |
| 2019-10-01 | 1 | 0 | 1 |
| 2019-09-01 | 1 | 0 | 1 |
| 2019-08-01 | 1 | 0 | 1 |
| 2019-07-01 | 1 | 0 | 1 |
| 2019-06-01 | 1 | 0 | 1 |
| 2019-05-01 | 1 | 0 | 1 |
| 2019-04-01 | 1 | 0 | 1 |
| 2019-03-01 | 1 | 0 | 1 |
| 2019-02-01 | 1 | 1 | 1 |
我试过了;
df['ChangeSum']=df.groupby(['ID','Year'])['AnnualSalaryChange'].cumsum()
但它并没有给出我真正想要的东西。我怎样才能做到这一点?谢谢。
【问题讨论】:
-
为什么行
2020-02-01是AnnualSalaryChangeSumFor12Months = 1? -
您好,最后几行丢失了。我编辑了,现在就清楚了。