gpt4 book ai didi

python - 基于列在数据框中添加或减去两列?

转载 作者:行者123 更新时间:2023-12-04 00:57:51 26 4
gpt4 key购买 nike

我的 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

最佳答案

如果 ADD 则想法乘以 1,如果 SUBRACT 列则乘以 -1 然后聚合 总和:

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 仅指定负值对于多个 -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

关于python - 基于列在数据框中添加或减去两列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60847007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com