我有这个数据框:
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',方式如下:
我尝试使用transform('sum')进行groupby,但是却得到了错误的结果。
df['score'].loc[df['tipo'] == "Memb"]=df[['nome','code','score']].groupby(['nome','code'])['score'].transform('sum')
我想念什么?
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