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

Pandas遍历DataFrame效率低,求无循环的向量化替代方案

解决Pandas循环遍历耗时问题:矢量化实现工作日偏移

你的代码执行慢的核心原因是逐行循环操作DataFrame——这完全浪费了Pandas和NumPy的矢量化运算优势,Python级别的循环在处理大数据量时会产生极高的开销。

直接用矢量化方式重写,完全规避循环:

步骤1:确保日期列是datetime类型(如果还不是)

df['Date_réception'] = pd.to_datetime(df['Date_réception'])

步骤2:矢量化计算工作日偏移

# 初始化目标列为NaN
df['Date_engagement'] = np.nan

# 筛选Engagement非空的行
mask = df['Engagement'].notna()

# 对符合条件的整列批量执行busday_offset
df.loc[mask, 'Date_engagement'] = np.busday_offset(
    df.loc[mask, 'Date_réception'].dt.date.values,  # 提取日期数组
    df.loc[mask, 'Engagement'].values,              # 提取工作日偏移量数组
    roll='backward',
    busdaycal=france_bdc
)

为什么这样更快?

np.busday_offset原生支持数组输入,会直接在底层用C语言批量处理所有数据,而不是像循环那样逐行调用Python代码,速度能提升几个数量级。

你之前用apply没成功,是因为apply本质还是逐行/逐列的循环(只是封装了),效率提升有限,而矢量化才是真正的批量运算方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:24:58