pandas如何根据其他列中的值汇总列的总和

时间:2017-11-24 17:16:26

标签: python pandas dataframe aggregation pandas-groupby

我尝试按groupby列对第二列中的值求值,但同时也考虑第3列的值,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分组,但如果memoposneg,则为正,groupby为负,例如当1 -1.0 - 2.0 + 3.0 = 0时,总金额为0,因为df.groupby('id')['amount'].sum()

如果我id,它只考虑amountmemo列,我想知道如何在此处考虑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

所以结果看起来像,

multiline.pattern: '^{'

multiline.negate: true

multiline.match: after

1 个答案:

答案 0 :(得分:1)

分两步拆分操作,你可以通过

实现你想要的
df['temp'] = np.where(df.memo == 'pos', df.amount, -df.amount)
df['total_amount'] = df.groupby('id').temp.transform(sum)