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

如何将数千个Pandas DataFrame合并为一个Vaex DataFrame?

合并数千个Pandas DataFrame为Vaex DataFrame的正确方法

你的两次尝试都存在合并方式的错误:

  • 首次错误:Vaex的concat是顶层工具函数(需调用vaex.concat()),并非Vaex DataFrame实例的方法,所以df_vaex.concat(df_vx)会触发属性错误。
  • 二次错误:你用Pandas的pd.concat()去合并Vaex DataFrame,两个库的数据对象不兼容,必然报错。

下面提供三种可行的实现方案,根据你的内存情况选择:

方案1:批量收集后一次性合并(推荐,效率最高)

先将所有转换后的Vaex DataFrame存入列表,最后一次性合并,避免循环中重复合并的性能损耗:

import vaex
import pandas as pd

vaex_dfs = []
for idx, file in enumerate(files):
    # 读取pickle为Pandas DataFrame
    pd_df = pd.read_pickle(file)
    # 转换为Vaex DataFrame
    vx_df = vaex.from_pandas(pd_df, copy_index=False)
    vaex_dfs.append(vx_df)
    
    if idx % 100 == 0:
        print(f"已处理 {idx} 个文件")

# 合并所有Vaex DataFrame
final_vaex_df = vaex.concat(vaex_dfs)

方案2:循环逐步合并(低内存场景适用)

如果内存不足以存储所有Vaex DataFrame,可以每次合并后更新总DataFrame,但注意必须用vaex.concat()重新赋值:

import vaex
import pandas as pd

final_vaex_df = None
for idx, file in enumerate(files):
    pd_df = pd.read_pickle(file)
    vx_df = vaex.from_pandas(pd_df, copy_index=False)
    
    if final_vaex_df is None:
        final_vaex_df = vx_df
    else:
        # 用Vaex的concat合并并重新赋值
        final_vaex_df = vaex.concat([final_vaex_df, vx_df])
    
    if idx % 100 == 0:
        print(f"已处理 {idx} 个文件")

方案3:先转存为Vaex格式再内存映射合并(超大数据量场景)

如果文件数量极大,内存压力过高,可以先将每个Pandas DataFrame转存为Vaex支持的格式(如HDF5、Arrow),再通过内存映射批量读取合并,无需加载全部数据到内存:

import vaex
import pandas as pd
import os

# 创建临时目录存储转换后的文件
temp_dir = "./vaex_temp_files"
os.makedirs(temp_dir, exist_ok=True)

# 批量转换并保存
for idx, file in enumerate(files):
    pd_df = pd.read_pickle(file)
    vx_df = vaex.from_pandas(pd_df, copy_index=False)
    temp_file = os.path.join(temp_dir, f"chunk_{idx}.hdf5")
    vx_df.export(temp_file)
    
    if idx % 100 == 0:
        print(f"已转存 {idx} 个文件")

# 内存映射读取并合并所有文件
final_vaex_df = vaex.open(os.path.join(temp_dir, "chunk_*.hdf5"))

注意事项

  • 确保所有源Pandas DataFrame的列名、数据类型完全一致,否则合并会出现列不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:25:37