我有一个包含a和b列的数据框。如果b为真,我想将列a乘以值x,如果b为假,则将值乘以值y。实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
你可以分2步完成:
df.loc[df.b, 'a'] *= x
df.loc[df.b == False, 'a'] *= y
或使用where
:
In [366]:
df = pd.DataFrame({'a':randn(5), 'b':[True, True, False, True, False]})
df
Out[366]:
a b
0 0.619641 True
1 -2.080053 True
2 0.379665 False
3 0.134897 True
4 1.580838 False
In [367]:
df.a *= np.where(df.b, 5,10)
df
Out[367]:
a b
0 3.098204 True
1 -10.400266 True
2 3.796653 False
3 0.674486 True
4 15.808377 False