根据 python 中的条件求累计和

Finding cumulative sum based on a condition in python

我想在 pandas 数据框中实现以下内容。我无法为此找到解决方案,希望得到您的帮助。


输入


A  |  B | C
1  |100 |             
1  | 10 | 30           
1  | 20 |        
1  | 30 |    

输出


A  |  B  | C            
1  | 100 |             
1  | 110 | 30            
1  | 100 | (110+20)-30        
1  | 130 |

假设您想要通过列 'A' 中的 id 计算列 'B' 的累积总和,并在 之前减去列 'C' 行,做:

df = pd.DataFrame([[1, 100, 0], [1, 10, 30], [1, 20, 0], [1, 30, 0], [2, 15, 0]], columns=['A', 'B', 'C'])
df['cumsum'] = df.groupby('A').cumsum()['B'] - df.groupby('A').shift().cumsum()['C'].fillna(0)
df

输出:

  A    B    C    cumsum
0 1  100    0     100.0 
1 1   10   30     110.0 
2 1   20    0     100.0 
3 1   30    0     130.0 
4 2   15    0      15.0