You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFrame中如何不使用for循环根据其他列值修改指定列取值

无循环实现条件替换的两种高效方案
  • 方案1:pandas .loc 条件赋值(无需额外依赖)
    直接通过布尔索引筛选符合条件的行批量赋值,全程为pandas向量化操作,无Python层循环开销:
    # 筛选type为Option的行,将对应行PRICE列赋值为同行STRIKE的值
    df.loc[df['type'] == 'Option', 'PRICE'] = df.loc[df['type'] == 'Option', 'STRIKE']
    
    适用场景:仅需要修改符合条件的行,其余行原值保留。
  • 方案2:numpy.where 批量赋值(代码更简洁)
    借助numpy的向量化条件判断函数实现,扩展性更强,适合多条件替换场景:
    import numpy as np
    # 判断逻辑:满足type==Option时取STRIKE值,否则保留原PRICE值
    df['PRICE'] = np.where(df['type'] == 'Option', df['STRIKE'], df['PRICE'])
    

注意事项

你原代码存在语法错误:if df.loc[i,'type'] == 'Option: 中的字符串'Option缺少右侧闭合单引号,运行会触发语法报错。
以上两种方案均为底层C实现的向量化运算,相比Python原生for循环,数据量越大性能提升越明显,普遍可达百倍到千倍级的效率提升。

内容的提问来源于stack exchange,提问作者Time_Series_FTW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:06:00