反转累积列

Reverse a Cumulative Column

我想反过来 -

ID  month   year    Fee
68119   February    2015    25
68119   March   2015    25
68119   April   2015    25
68119   May 2015    25
00200   February    2015    50
00200   March   2015    375
00200   April   2015    375
00200   May 2015    375
00200   June    2015    375
00200   July    2015    375
00200   August  2015    375

Fee YTD 数字。我想要 MTD 编号。预期输出 -

ID  month   year    Fee
68119   February    2015    25
68119   March   2015    0
68119   April   2015    0
68119   May 2015    0
00200   February    2015    50
00200   March   2015    325
00200   April   2015    0
00200   May 2015    0
00200   June    2015    0
00200   July    2015    0
00200   August  2015    0

年初至今的逻辑 -

df.groupby('ID')['Fee'].cumsum()

现在对于 MTD,我认为如果没有 pandas 的方法,那么我必须在 IDsort 上使用 for 循环[year, month] 然后做减法。我已经尝试过了,但我知道有一种更原生的 pandas 方法可以做到这一点。提前致谢。

让我们试试这个:

df['FeeMonthly'] = df.groupby(['ID','year'])['Fee'].diff().fillna(df.Fee)

输出:

       ID     month  year  Fee  FeeMonthly
0   68119  February  2015   25        25.0
1   68119     March  2015   25         0.0
2   68119     April  2015   25         0.0
3   68119       May  2015   25         0.0
4     200  February  2015   50        50.0
5     200     March  2015  375       325.0
6     200     April  2015  375         0.0
7     200       May  2015  375         0.0
8     200      June  2015  375         0.0
9     200      July  2015  375         0.0
10    200    August  2015  375         0.0