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

使用IF条件操作DataFrame列效率低,有什么更快速简洁的实现方法?

问题核心

你当前的实现用了逐行遍历的方式,完全没有用到pandas的向量化运算能力,是性能差的核心原因。下面是更快速且写法更简洁的实现:

优化后实现代码

import numpy as np

# 公共计算部分提前提取,减少重复运算
base_value = merged["price"] * merged["amount"]
# 向量化条件判断完成赋值
merged["total"] = np.where(
    merged["coin"].str.split("_").str[1] == "ARS",
    base_value / merged["valueUSD"],
    base_value
)

如果不需要保留中间计算结果,也可以合并成单行写法:

import numpy as np

merged["total"] = np.where(merged["coin"].str.split("_").str[1] == "ARS", merged["price"]*merged["amount"]/merged["valueUSD"], merged["price"]*merged["amount"])

优化效果说明

  • 性能提升显著:全向量化运算,对比原逐行遍历方案,万行级数据性能提升可达数十倍,十万行以上数据提升可达百倍
  • 代码更简洁易读:仅需2-3行即可完成所有逻辑,避免了循环的冗余写法
  • 规避潜在问题:不会出现原iloc逐行赋值容易触发的SettingWithCopyWarning警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:06:02