我有一个带有两列的pandas数据框如下。
df = pd.DataFrame({'quantity':[15, 30, 35, 20], 'sign':[1,1,2,1]})
我希望能够在每一行都应用一个条件语句,如果该行中对应的“sign”值等于2,则将该行中“quantity”值乘以-1。我不想创建一个新的列,只想将此应用于“quantity”列。
我尝试使用“.loc”和“.apply(lambda x:)”,但我可能没有正确应用它们。欢迎任何帮助。
使用 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