使用groupby选择行,对列求和,并使用所有groupby元素的总和创建新列

问题描述 投票:-1回答:1

我有这个数据框:

nome       code  tipo   score
Alexandre   AAA  Frads  4000
Alexandre   AAA  Memb   10000
Alexandre   AAA  Memb   20000
Bruno       BBB  Dans   10000
Bruno       BBB  Grap   4000

Values available in this Google Sheets

我需要创建一个新列,以相同的符号和代码对行进行汇总,其中tipo ='Memb',方式如下:

enter image description here

我尝试使用transform('sum')进行groupby,但是却得到了错误的结果。

df['score'].loc[df['tipo'] == "Memb"]=df[['nome','code','score']].groupby(['nome','code'])['score'].transform('sum')

enter image description here

我想念什么?

python pandas pandas-groupby
1个回答
0
投票
import numpy as np df['Memb_sum']=df.groupby(['nome','code'])['score'].transform('sum') df['Memb_sum']=np.where(df['tipo'] != 'Memb', 0, df['Memb_sum'])
您可以先进行分组,然后再过滤出值。 

输出:

nome code tipo score Memb_sum 0 Alexandre AAA Frads 4000 0 1 Alexandre AAA Memb 10000 34000 2 Alexandre AAA Memb 20000 34000 3 Bruno BBB Dans 10000 0 4 Bruno BBB Grap 4000 0

© www.soinside.com 2019 - 2024. All rights reserved.