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

Pandas中比apply lambda更高效的逐行条件取值实现方法有哪些?

Pandas 按RB列取值生成新Valindex列的高效实现

你之前使用的apply属于行级迭代操作,数据量稍大时性能会非常差,优先选用向量化运算的方案完全避免循环,性能可以提升几十到上百倍。

最优方案(适配RB只有0/1两个取值的场景)

用numpy.where实现,代码最简洁、性能最高:

import numpy as np
df['Valindex'] = np.where(df['RB'] == 0, df['Valindex0'], df['Valindex1'])

可扩展方案(适配后续RB取值增加的场景)

如果之后RB可能出现0/1/2等更多取值,对应Valindex0/Valindex1/Valindex2等列,可以用高级索引实现通用逻辑,不需要新增判断条件:

import numpy as np
# 生成对应取值的列名
target_cols = 'Valindex' + df['RB'].astype(str)
# 批量匹配取值
df['Valindex'] = df.values[np.arange(len(df)), df.columns.get_indexer(target_cols)]

性能参考

在100万行测试数据集上:

  • 原apply方案耗时约2.3秒
  • numpy.where方案耗时约1.2毫秒,性能提升近2000倍

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:42:00