Python Pandas:对与给定类别相对应的另一列中的每个元素求和,但不包括其本身

Python Pandas:对与给定类别相对应的另一列中的每个元素求和,但不包括其本身,python,pandas,dataframe,apply,Python,Pandas,Dataframe,Apply,我有一个如下的数据框架(省略索引),其中“y”和“Category”是列: y Category 4 A1 3 A2 1 A2 6 A1 10 A2 8 A1 我需要做以下工作。我需要遍历“Catego

我有一个如下的数据框架(省略索引),其中“y”和“Category”是列:

    y      Category                        
    4      A1         
    3      A2            
    1      A2               
    6      A1        
    10     A2          
    8      A1        
我需要做以下工作。我需要遍历“Category”中的每个元素,并对该类别的所有“y”值求和,忽略其本身,然后创建相应的列。因此,对于上面的数据帧,我将得到newcolumn作为

    y    Category  Sum_except_it_self                      
    4      A1        14  
    3      A2        11    
    1      A2        13      
    6      A1        9
    10     A2        4 
    8      A1        10
我发现在使用pandas的apply方法时,很难实现'except'本身部分。在“类别”列上使用apply方法时,我需要在“y”列中找到相应的值并将其减去


有人能帮忙吗?

让我们使用带有lambda函数和变换的
groupby

df['Sum_X_self'] = df.groupby('Category')['y'].transform(lambda x: x.sum()-x)
输出:

        y Category  Sum_X_self
0   4       A1          14
1   3       A2          11
2   1       A2          13
3   6       A1          12
4  10       A2           4
5   8       A1          10

令人惊叹的!!谢谢我也可以用这个方法找到其余值的平均值吗?通过df['Sum_X_self']=df.groupby('Category')['y'].transform(lambda X:(X.Sum()-X)/(X.count()-1))确定。你可以用sum()-x除以x.size-1来计算,太好了!!谢谢