基于另一列的值对Pandas DF的一列进行条件操作

时间:2019-05-16 10:17:45

标签: python pandas dataframe

我下面有2列的pandas数据框。

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

如果该行中相应的quantity值等于2,我想应用条件语句并将每行中的sign值乘以-1。我不想创建一个新列。我只想将其应用于quantity列。

我尝试使用.loc.apply(lamda x:),但是我不能正确地应用它们。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

DataFrame.locSeries.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