使用上一行计算当前行的总和

Using previous row to calculate sum of current row

我有一个 python 问题,我似乎无法弄清楚。以下数据框说明了在给定年份和月份中花钱的人:

ID Year Month Amount
134 2020 11 -199
134 2020 12 -50
134 2021 1 40
135 2020 11 -365
135 2020 12 -23
135 2021 1 400

但是,我想添加一个新列来汇总每个月的这些费用。

示例:某人在第 1 个月花费 50 欧元,在第 2 个月花费 100 欧元。这将在第 2 个月总共花费 150 欧元。我想在新专栏中说明这种支出行为,并假设每个人都有 100 欧元作为启动资金。 (这就是为什么在下面的示例中,一个人花费了 200,但新列显示 -100。

这是我想要的专栏:

ID Year Month Amount NewColumn
134 2020 11 -200 -100
134 2020 12 -50 -150
134 2021 1 40 -110
135 2020 11 -365 -265
135 2020 12 -23 -288
135 2021 1 400 112

这是重新创建第一个数据帧的代码:

data = {'ID': ['134', '134','134','135','135','135',], 'Year': [2020, 2020, 2021, 2020, 2020, 2021,], 'Month': [11, 12, 1, 11, 12, 1], 'Amount': [-199, -50, 40, -365, -23, 400]}  
df = pd.DataFrame(data)  

我已经尝试了 cumsum() 和 .rolling 但无法弄清楚。 希望我已经提供了足够的信息,否则我会很乐意提供更多信息

提前致谢

您可以使用 cumsum() + 100:

df["NewColumn"] = df.groupby(["ID"])["Amount"].cumsum()+100

输出:

    ID  Year        Month   Amount  NewColumn
0   134     2020    11      -199    -99
1   134     2020    12      -50     -149
2   134     2021    1       40      -109
3   135     2020    11      -365    -265
4   135     2020    12      -23     -288
5   135     2021    1       400     112

PS:当您从 -200 开始时,您的预期输出略有不同,但在数据中它是 -199 :-)