使用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
相关产品推荐
相关产品推荐

