簡體   English   中英

根據列在數據框中添加或減去兩列?

[英]Add or Subract two columns in a dataframe on basis of column?

我有 df 有三列名稱、數量和類型。 我正在嘗試根據類型向用戶添加或減去值

這是我的示例 df

    name    amount  type                  
0   John    10      ADD
1   John    20      ADD
2   John    50      ADD
3   John    50      SUBRACT
4   Adam    15      ADD
5   Adam    25      ADD
6   Adam    5       ADD
7   Adam    30      SUBRACT
8   Mary    100     ADD

我的結果 df

    name    amount                    
0   John    30      
1   Adam    15      
2   Mary    100   

想法是乘以1如果ADD-1如果SUBRACT列然后聚合sum

df1 = (df['amount'].mul(df['type'].map({'ADD':1, 'SUBRACT':-1}))
                   .groupby(df['name'], sort=False)
                   .sum()
                   .reset_index(name='amount'))
print (df1)
   name  amount
0  John      30
1  Adam      15
2  Mary     100

詳情

print (df['type'].map({'ADD':1, 'SUBRACT':-1}))
0    1
1    1
2    1
3   -1
4    1
5    1
6    1
7   -1
8    1
Name: type, dtype: int64

也可以使用numpy.where僅指定負值, numpy.where -1和所有其他乘以1

df1 = (df['amount'].mul(np.where(df['type'].eq('SUBRACT'), -1, 1))
                   .groupby(df['name'], sort=False)
                   .sum()
                   .reset_index(name='amount'))
print (df1)

   name  amount
0  John      30
1  Adam      15
2  Mary     100

一種想法可能是使用Series.where改變符號amount相應然后groupby.sum

df.amount.where(df.type.eq('ADD'), -df.amount).groupby(df.name).sum().reset_index()

   name  amount
0  Adam      15
1  John      30
2  Mary     100

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM