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

如何替换代码中的Iterrows以提升Pandas程序运行效率?

Pandas向量化替代iterrows提升效率的方案

你的原代码逻辑是遍历每一行,当列a的浮点值等于key_1时,将第15列(iloc索引14)赋值为该行的key_2,否则赋值为该行的key_1。用向量化操作可以彻底抛弃低效的iterrows,下面是两种简洁高效的实现方式:

方法一:使用numpy.where(推荐)

np.where是典型的向量化条件赋值工具,一行代码就能完成逻辑:

import numpy as np

# 先将列'a'统一转为float类型(避免循环里重复转换)
df['a'] = df['a'].astype(float)
# 获取目标列的列名(比直接用iloc更清晰)
target_col = df.columns[14]
# 条件赋值
df[target_col] = np.where(df['a'] == key_1, df['key_2'], df['key_1'])

方法二:使用Pandas的loc索引

先设置默认值,再批量更新满足条件的行,逻辑更直观:

df['a'] = df['a'].astype(float)
target_col = df.columns[14]

# 先给所有行设置默认值key_1
df[target_col] = df['key_1']
# 批量替换满足条件的行的值为key_2
df.loc[df['a'] == key_1, target_col] = df['key_2']

关键注意点

  • 提前统一列a的类型为float,避免重复转换带来的额外开销;
  • 尽量用列名而非iloc索引操作,代码可读性更强,也避免因列顺序变化导致的错误;
  • 两种方法都是底层C级别的向量化操作,数据量越大,和iterrows的效率差距越明显(通常能快几十到上百倍)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:20:59