基于另一列的值,对一列的累加求和?

5

我有一个类似于这个的数据框,我想要获得"Number"列的累加和,直到"Name"列等于"AAAA"为止。 因此,我想要在每个'AAAA'之间获得"Number"列的累积和。所以每次在列中出现'AAAA'时,求和就重新开始。 有没有一种方法可以做到这一点?

data = {'Name':  ['AAAA','B','C','D','E','AAAA','O','C','D','E','AAAA','D', 'C','D','E','AAAA','B','C','D','E','AAAA','L','M'],
    'Number': [7,8,9,10,1,1,2,34,5,6,7,8,9,10,1,1,7,8,2,3,5,6,7]
    }

df = pd.DataFrame (data, columns = ['Name','Number'])
df['Sum_Cummulative']=df['Number'].cumsum() 

enter image description here

1个回答

7
使用GroupBy.cumsum和比较Name创建的辅助Series一起使用Series.cumsum
df['Sum_Cummulative']=df.groupby(df['Name'].eq('AAAA').cumsum())['Number'].cumsum() 
print (df)
    Name  Number  Sum_Cummulative
0   AAAA       7                7
1      B       8               15
2      C       9               24
3      D      10               34
4      E       1               35
5   AAAA       1                1
6      O       2                3
7      C      34               37
8      D       5               42
9      E       6               48
10  AAAA       7                7
11     D       8               15
12     C       9               24
13     D      10               34
14     E       1               35
15  AAAA       1                1
16     B       7                8
17     C       8               16
18     D       2               18
19     E       3               21
20  AAAA       5                5
21     L       6               11
22     M       7               18

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接