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

如何加速DataFrame中50万列与指定列的批量相减操作?

加速DataFrame批量列减法的方法

你的问题核心是避免Python层面的逐列循环——pandas的循环操作在列数极多(50万列)时会产生巨大的开销,换成矢量化运算能把速度提升几个数量级。

直接用pandas的广播特性一次性完成所有列的减法:

# 筛选出除Intercept之外的所有目标列
target_cols = reg_df.columns.difference(['Intercept'])
# 一次性对所有目标列执行减法,利用广播自动匹配行维度
reg_df[target_cols] = reg_df[target_cols].sub(reg_df['Intercept'], axis=0)

为什么这方法更快?

  • 原循环是逐列调用sub,每一步都要处理列的索引、赋值等Python层面的逻辑,50万次循环的开销累积起来非常大。
  • 矢量化运算直接调用底层numpy的C语言实现,一次性对所有列做运算,完全跳过了Python循环的额外开销。

额外优化建议

  1. 调整数据类型:如果业务允许,把数据类型从float64转为float32,能减少内存占用,进一步提升运算速度:
    reg_df = reg_df.astype('float32')
    
  2. 确保内存充足:保证机器有足够内存加载整个DataFrame,避免因内存不足触发磁盘交换(swap)拖慢速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:53:11