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

如何高效从大型DataFrame字典中提取同名列?(解决性能警告问题)

解决方案

直接使用pd.concat进行批量合并即可,这也是警告里官方推荐的优化方案,避免循环插入列造成的内存碎片化问题:

import pandas as pd

# 最简实现,和你原有逻辑输出完全一致
df_filtered = pd.concat(
    # 提取所有DataFrame的目标列
    [df['desired_col'] for df in dic.values()],
    # 按列合并
    axis=1,
    # 用字典的键作为新DataFrame的列名
    keys=dic.keys()
)

可选安全版本

如果不确定所有子DataFrame都包含desired_col,可以增加校验逻辑避免报错:

valid_cols = []
valid_keys = []
for key, df in dic.items():
    if 'desired_col' in df.columns:
        valid_cols.append(df['desired_col'])
        valid_keys.append(key)

df_filtered = pd.concat(valid_cols, axis=1, keys=valid_keys)

原方案性能问题说明

循环中反复为DataFrame新增列时,pandas需要每次调整内存分配,插入上千次后内存会被拆分为大量不连续的小碎片,不仅触发警告,执行速度也会越来越慢。pd.concat是底层C优化的批量操作,会提前申请连续内存一次性完成合并,1000个DataFrame的场景下执行速度比循环插入高至少一个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:30:01