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

如何用pd.concat一次性生成DataFrame列,替代多次frame.insert?

解决DataFrame循环插入列的性能警告问题

核心解决方案

直接批量生成所有目标列对应的Series,再用pd.concat一次性合并,彻底避免循环插入带来的内存碎片化问题:

# 批量生成所有需要的列的Series
column_series = [phiNT(M, i) for i in range(1, len(M.columns))]
# 一次性合并为DataFrame并设置列名
A = pd.concat(column_series, axis=1)
A.columns = range(1, len(M.columns))

可选:优化phiNT函数提升性能

原函数的部分操作可以简化,减少重复的DataFrame切片与拼接操作,进一步提升处理大数据的效率:

def phiNT(M, nT):
    # 截取前nT列数据
    sub_df = M.iloc[:, :nT]
    # 直接让每列减去最后一列,再计算行均值
    return sub_df.sub(sub_df.iloc[:, -1], axis=0).mean(axis=1)

原理说明

循环插入列时,每次操作都会修改原DataFrame的内存结构,导致内存碎片化,进而触发性能警告。而pd.concat是批量合并操作,会一次性分配连续内存空间,既消除了警告,也能显著提升6000行200列规模数据的处理速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:01:03