我试图对groupby
第二列中的值求和,但同时也考虑第三列中的值,df
就像,
id memo amount
1 pos 1.0
1 pos 2.0
1 neg 3.0
2 pos 4.0
2 pos 5.0
2 neg 6.0
2 neg 7.0
我想通过组id
和求和amount
每个组,但是,如果memo
是pos
它是正和neg
负,例如,当groupby
1
时,总量为0,因为-1.0 - 2.0 + 3.0 = 0
。
如果我这样做df.groupby('id')['amount'].sum()
,只考虑id
和amount
专栏中,我想知道如何还需要memo
考虑在这里。
所以结果看起来像
id memo amount total_amount
1 pos 1.0 0.0
1 pos 2.0 0.0
1 neg 3.0 0.0
2 pos 4.0 -4.0
2 pos 5.0 -4.0
2 neg 6.0 -4.0
2 neg 7.0 -4.0
分两步进行操作,即可实现所需的目标
df['temp'] = np.where(df.memo == 'pos', df.amount, -df.amount)
df['total_amount'] = df.groupby('id').temp.transform(sum)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句