Python Pandas dataframe—计算符合条件的行的总和,并将其与列表元素进行比较

Python Pandas dataframe—计算符合条件的行的总和,并将其与列表元素进行比较,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据示例: 0 1 2 3 2 Text1 1 1 5 5,00 3 Text2 8 4 0 0,00 4 Text3 1 3 0 2,00 5 SUM 6 0 0

我有一个数据示例:

           0         1         2         3        
2  Text1   1         1         5         5,00       
3  Text2   8         4         0         0,00     
4  Text3   1         3         0         2,00     
5  SUM     6         0         0         7,00       
6  Text1   1         1         0         10        
7  Text2   8         4         0         0,00     
8  Text3   1         3         0         0,00
8  Text4   1         3         0         2,02       
9  SUM     6         0         0         20
我想计算最后一列中各行的总和,直到单词“sum”出现在
df[0]
然后将此总和的结果分配给列表。 例如:

第一个和应该是这样的:
Text1行+Text2+Text3
=
5,00+0,00+2,00
-前几行
df[:,-1]
的和 然后列表的第一个元素是
['7,00']

然后是
df[0]
中单词
sum
前面行中最后一列的总和:
Text1+Text2+Text3+Text3
=
10+0+0+2,02

然后列表的第二个元素是
['12,02']
,整个列表现在看起来是:
['7,00'],['12,02']
['7,00','12,02']

最后,我想将整个列表与
df.loc[(df[0]=='SUM')]

在df的条件下,这样的总和计数是可能的吗?
给我一些提示或说明我如何做,以及是否可行。

使用:

#convert last column to numbers
df.iloc[:, -1] = df.iloc[:, -1].str.replace(',','.').astype(float)

#create groups with last value SUM
df.insert(0, 'g', df[0].eq('SUM').iloc[::-1].cumsum().iloc[::-1])

#sum values per groups with omit last value (SUM)
df.insert(0, 'new', df.iloc[:, -1].groupby(df['g']).transform(lambda x: x[:-1].sum()))
print (df)
     new  g      0  1  2  3      4
2   7.00  2  Text1  1  1  5   5.00
3   7.00  2  Text2  8  4  0   0.00
4   7.00  2  Text3  1  3  0   2.00
5   7.00  2    SUM  6  0  0   7.00
6  12.02  1  Text1  1  1  0  10.00
7  12.02  1  Text2  8  4  0   0.00
8  12.02  1  Text3  1  3  0   0.00
8  12.02  1  Text4  1  3  0   2.02
9  12.02  1    SUM  6  0  0  20.00

#compare values 
df1 = df[df['new'].eq(df.iloc[:, -1]) & df[0].eq('SUM')]
print (df1)
   new  g    0  1  2  3    4
5  7.0  2  SUM  6  0  0  7.0

很好的解决方案。谢谢你的帮助。现在我要做的就是添加:
df1.loc[df['new']==df.iloc[:,-1],'Equal']='True'df1.loc[df['new']!=df.iloc[:,-1],'Equal']='False'
,我不需要使用任何其他列表。再次感谢你的帮助。我将分析代码并在其他情况下使用。@DeepSea-或使用
df['Equal']=df['new'].eq(df.iloc[:,-1])&df[0.eq('SUM')