首页 > 解决方案 > 根据另一列的值对 Pandas DF 的一列进行条件操作

问题描述

我有下面的熊猫数据框,有 2 列。

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

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

我试过使用.locand .apply(lamda x:),但我一定不能正确应用它们。任何帮助表示赞赏。

标签: pythonpandasdataframe

解决方案


使用DataFrame.locwith mask bySeries.eq表示相等,使用 multiby 标量:

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

推荐阅读