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

如何在pandas中使用向量化操作替代for循环完成列计算

Pandas 循环向量化改造方案

两种完全匹配原逻辑的向量化实现如下,改造后可将1.7万行的计算耗时从3秒降至毫秒级:

方案1:基于 .loc 的条件赋值(最贴合原逻辑)

# 构造布尔掩码:筛选两列均不为0的行
mask = (model_olculeri["Bel"] != 0) & (model_olculeri["Basen"] != 0)
# 对符合条件的行批量计算并赋值
model_olculeri.loc[mask, "Waist to Hip Ratio"] = model_olculeri.loc[mask, "Bel"] / model_olculeri.loc[mask, "Basen"]

方案2:基于 numpy.where 的单语句实现

import numpy as np

# 参数规则:(判断条件, 条件成立时的取值, 条件不成立时的取值)
# 若为首次创建新列,不满足条件的位置可直接填充为 np.nan
model_olculeri["Waist to Hip Ratio"] = np.where(
    (model_olculeri["Bel"] != 0) & (model_olculeri["Basen"] != 0),
    model_olculeri["Bel"] / model_olculeri["Basen"],
    model_olculeri.get("Waist to Hip Ratio", np.nan)
)

注意事项

  • Pandas 批量布尔运算需使用&替代Python原生的and,每个判断条件必须用括号包裹,避免运算符优先级报错
  • 向量化操作底层为C实现的批量运算,完全规避了Python层逐行循环的开销,性能提升可达数百倍

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:04