我下面有2列的pandas数据框。
df = pd.DataFrame({'quantity':[15, 30, 35, 20], 'sign':[1,1,2,1]})
如果该行中相应的quantity
值等于2,我想应用条件语句并将每行中的sign
值乘以-1。我不想创建一个新列。我只想将其应用于quantity
列。
我尝试使用.loc
和.apply(lamda x:)
,但是我不能正确地应用它们。任何帮助表示赞赏。
答案 0 :(得分:3)
将DataFrame.loc
与Series.eq
一起使用掩码,以确保相等,并按标量进行倍数:
df = pd.DataFrame({'quantity':[15, 30, 35, 20], 'sign':[1,1,2,1]})
df.loc[df['sign'].eq(2), 'quantity'] *= - 1
print (df)
quantity sign
0 15 1
1 30 1
2 -35 2
3 20 1