答案 0 :(得分:2)
通过操纵布尔系列df.tag != 'x'
df['res'] = df.tag.ne('x').mul(2).sub(1).mul(df.val)
df
# tag val res
#0 x 1 -1
#1 x 2 -2
#2 z 3 3
#3 z 1 1
#4 x 2 -2
#5 z 3 3
答案 1 :(得分:1)
您可以使用apply
:
df['res'] = df.apply(
lambda x: x['val'] if not x['tag'] == 'x' else (-1 * x['val']), axis=1)
答案 2 :(得分:1)
使用np.where
df['res']=np.where(df.tag=='x',-df.val,df.val)
df
Out[271]:
tag val res
0 x 1 -1
1 x 2 -2
2 z 3 3
3 z 1 1
4 x 2 -2
5 z 3 3
答案 3 :(得分:1)
这样做:
# ...
import numpy as np
df['res'] = np.where(df['tag'] == 'x', -df['val'], df['val'])