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

在已有DataFrame中高效添加移位列的优化方案

高效生成DataFrame移位列的方法

你遇到的性能警告是因为循环中逐个添加列会频繁触发DataFrame的内存重组,尤其是1000万行的数据集,365次列插入操作会导致数据碎片化,大幅降低性能。

优化方案:一次性合并所有移位列

核心思路是先批量生成所有移位后的Series,再用pd.concat一次性合并到原DataFrame,避免多次内存调整:

import pandas as pd 

lst1 = range(10000000)
df = pd.DataFrame(lst1, columns=['mw']) 
lagSize = 365

# 批量生成所有移位后的列
shifted_columns = [
    df['mw'].shift(i).rename(f"mw_{i}_-1") 
    for i in range(1, lagSize + 1)
]

# 一次性合并到原DataFrame
df = pd.concat([df] + shifted_columns, axis=1)

为什么这个方法更快?

  • 原循环中每次执行df[new_col] = ...都会调用DataFrame的insert方法,每次插入都要重新调整内存布局,365次操作的开销累积极大;
  • 先批量生成所有移位Series,再用pd.concat一次性合并,只需要一次内存布局调整,性能提升非常明显,同时避免了数据碎片化问题。

如果合并后仍存在碎片化提示,可执行df = df.copy()强制重新整理内存,但上述方案已经从根源减少了碎片化的产生。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:40:56