Skip to main content
 首页 » 编程设计

python之如何使用 .loc 设置为 pandas 中的其他列值

2025年05月04日9lovecherry

例如,我有一个数据框:

    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