Python 熊猫:如何防止自己遍历行?
我有以下数据帧Python 熊猫:如何防止自己遍历行?,python,pandas,Python,Pandas,我有以下数据帧 Charge_type Amount Quantity Credit 2.5 3 Credit 3.24 2 Debit 5.98 6 我需要以下输出,如果费用类型为“信用”,则乘以“金额”*-1和“数量”*-1得到以下结果: Charge_type Amount Quantity Credit -2.5 -3 Credit -3.24 -2 Debit 5.98
Charge_type Amount Quantity
Credit 2.5 3
Credit 3.24 2
Debit 5.98 6
我需要以下输出,如果费用类型为“信用”,则乘以“金额”*-1和“数量”*-1得到以下结果:
Charge_type Amount Quantity
Credit -2.5 -3
Credit -3.24 -2
Debit 5.98 6
我不知道从哪里开始,我在网上看到的每一个地方都说不要在熊猫身上重复。对不起,我还是Python和Pandas的初学者。非常感谢您的帮助。您可以为列
费用类型
创建掩蔽,并使用.loc
和列名称访问掩蔽值为True
的列,然后相应地分配新值:
mask=df['Charge\u type']='Credit'
df.loc[mask,'Amount']=-df['Amount']
df.loc[mask,'Quantity']=-df['Quantity']
输出:
费用类型金额数量
0学分-2.50-3
1学分-3.24-2
2借方5.98 6
一个选项是使用:
第一部分创建一个布尔索引df['Charge\u type'].eq('Credit')
(根据Charge\u type为'Credit'的位置选择行)
第二部分选择影响['Amount','Quantity']
的列,在本例中为'Amount'和'Quantity'
最后,使用快捷操作符*=
对值求反
df
:
Charge_type Amount Quantity
0 Credit -2.50 -3
1 Credit -3.24 -2
2 Debit 5.98 6
我认为,将其他两个答案的方法结合起来(两个答案都已被提升)最具可读性:
mask = df['Charge_type'] == 'Credit'
df.loc[mask, ['Amount', 'Quantity']] *= -1
输出:
Charge_type Amount Quantity
0 Credit -2.50 -3
1 Credit -3.24 -2
2 Debit 5.98 6
非常感谢!所有的评论都很有帮助!
Charge_type Amount Quantity
0 Credit -2.50 -3
1 Credit -3.24 -2
2 Debit 5.98 6