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

拼接DataFrame列表仅保留之前未出现的列,有更优实现方法吗?

优化实现方案

你原有的实现逻辑是正确的,但存在循环中反复拼接大表的性能缺陷,更高效的实现可以先完成所有列筛选的预处理工作,最后仅执行一次拼接操作:

import pandas as pd

dfs = [df1, df2, df3, df4] # 替换为你的DataFrame列表
seen_columns = set()
preprocessed_dfs = []

for df in dfs:
    # 筛选当前DataFrame中未在之前出现过的列
    target_cols = [col for col in df.columns if col not in seen_columns]
    preprocessed_dfs.append(df[target_cols])
    # 更新已出现的列集合
    seen_columns.update(target_cols)

# 一次性完成所有片段的拼接
final_df = pd.concat(preprocessed_dfs, ignore_index=True)

优势说明

  • 性能大幅提升:仅执行一次pd.concat,避免了循环中反复拷贝已拼接的大表,数据量越大优化效果越明显
  • 维护成本更低:拆分列筛选和拼接两个独立步骤,更容易适配自定义的列处理规则
  • 查找效率更高:通过集合存储已出现的列,列存在性判断的时间复杂度为O(1),比对DataFrame列索引直接查询效率更高

如果需要保留原始数据的行索引,删除pd.concat中的ignore_index=True参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:05