Python Pandas:对与给定类别相对应的另一列中的每个元素求和,但不包括其本身
我有一个如下的数据框架(省略索引),其中“y”和“Category”是列: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
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来计算,太好了!!谢谢