【发布时间】:2021-06-19 05:57:07
【问题描述】:
给定表:
| ID | LINE | SITE | DATE | UNITS | TOTAL |
|---|---|---|---|---|---|
| 1 | X | AAA | 02-May-2017 | 12 | 30 |
| 2 | X | AAA | 03-May-2017 | 10 | 22 |
| 3 | X | AAA | 04-May-2017 | 22 | 40 |
| 4 | Z | AAA | 20-MAY-2017 | 15 | 44 |
| 5 | Z | AAA | 21-May-2017 | 8 | 30 |
| 6 | Z | BBB | 22-May-2017 | 10 | 32 |
| 7 | Z | BBB | 23-May-2017 | 25 | 52 |
| 8 | K | CCC | 02-Jun-2017 | 6 | 22 |
| 9 | K | CCC | 03-Jun-2017 | 4 | 33 |
| 10 | K | CCC | 12-Aug-2017 | 11 | 44 |
| 11 | K | CCC | 13-Aug-2017 | 19 | 40 |
| 12 | K | CCC | 14-Aug-2017 | 30 | 40 |
对于每一行,如果 ID、LINE 、SITE 等于前一行(天)需要计算如下(最后一天)和(最后 3 天): 请注意,需要确保 ID、LINE、SITE 列的“groupby”下的日期是连续的
| ID | LINE | SITE | DATE | UNITS | TOTAL | Last day | Last 3 days |
|---|---|---|---|---|---|---|---|
| 1 | X | AAA | 02-May-2017 | 12 | 30 | 0 | 0 |
| 2 | X | AAA | 03-May-2017 | 10 | 22 | 12/30 | 12/30 |
| 3 | X | AAA | 04-May-2017 | 22 | 40 | 10/22 | (10+12)/(30+22) |
| 4 | Z | AAA | 20-MAY-2017 | 15 | 44 | 0 | 0 |
| 5 | Z | AAA | 21-May-2017 | 8 | 30 | 15/44 | 15/44 |
| 6 | Z | BBB | 22-May-2017 | 10 | 32 | 0 | 0 |
| 7 | Z | BBB | 23-May-2017 | 25 | 52 | 10/32 | 10/32 |
| 8 | K | CCC | 02-Jun-2017 | 6 | 22 | 0 | 0 |
| 9 | K | CCC | 03-Jun-2017 | 4 | 33 | 6/22 | 6/22 |
| 10 | K | CCC | 12-Aug-2017 | 11 | 44 | 4/33 | 0 |
| 11 | K | CCC | 13-Aug-2017 | 19 | 40 | 11/44 | (11/44) |
| 12 | K | CCC | 14-Aug-2017 | 30 | 40 | 19/40 | (11+19/44+40) |
【问题讨论】:
标签: pandas date pandas-groupby shift cumsum