例如,我有一个数据框:
cond value1 value2
0 True 1 1
1 False 3 5
2 True 34 2
3 True 23 23
4 False 4 2
我希望在cond=True时将value1替换为value2*2。所以我想要的结果是:
cond value1 value2
0 True 2 1
1 False 3 5
2 True 4 2
3 True 46 23
4 False 4 2
我可以通过下面的代码实现它:
def convert(x):
if x.cond:
x.value1= x.value2*2
return x
data = data.apply(lambda x: convert(x),axis=1)
我觉得数据大的时候太慢了。我用.loc试了一下,不知道怎么设置值。
如何通过.loc或者其他简单的方式实现?提前致谢。
请您参考如下方法:
创建 bool 掩码和多个仅过滤的行:
mask = df.cond
df.loc[mask, 'value1'] = df.loc[mask, 'value2'] * 2
print (df)
cond value1 value2
0 True 2 1
1 False 3 5
2 True 4 2
3 True 46 23
4 False 4 2
