基于Pandas数据帧的另一列值进行条件操作

4

我有一个带有两列的pandas数据框如下。

df = pd.DataFrame({'quantity':[15, 30, 35, 20], 'sign':[1,1,2,1]})

我希望能够在每一行都应用一个条件语句,如果该行中对应的“sign”值等于2,则将该行中“quantity”值乘以-1。我不想创建一个新的列,只想将此应用于“quantity”列。
我尝试使用“.loc”和“.apply(lambda x:)”,但我可能没有正确应用它们。欢迎任何帮助。
1个回答

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

1
谢谢你的帮助。这很容易。我是一个 Python 新手,之前主要使用 R 工作。 - blackhawks797

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接