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

如何使用Vaex对两个HDF5文件执行Inner Join并导出为CSV文件

Vaex自带原生的join方法,完全可以替代pandas的merge实现inner join,且全程不用把全量数据加载到内存,性能和你选择Vaex的预期匹配。
你之前报错的根因是pd.merge是pandas的专属接口,仅支持处理pandas DataFrame对象,传入Vaex DataFrame自然无法兼容,直接使用Vaex自带的API即可解决问题。

修正后的可运行代码如下:

import vaex

# 读取CSV并转成HDF5格式,convert=True会自动生成.hdf5文件,后续重复运行可直接open对应hdf5文件跳过转换步骤
vaex_df1 = vaex.from_csv(file1, convert=True, chunk_size=5_000)
vaex_df2 = vaex.from_csv(file2, convert=True, chunk_size=5_000)

# 以下读取hdf5的代码为冗余步骤可省略,from_csv加convert=True已经返回可用的Vaex DataFrame,仅二次运行时可直接用这两行跳过csv转hdf5的过程
# vaex_df1 = vaex.open(f"{file1}.hdf5")
# vaex_df2 = vaex.open(f"{file2}.hdf5")

# 执行inner join,两边关联字段名相同直接用on参数即可
df_join = vaex_df1.join(vaex_df2, how='inner', on='CL_CLIENT_ID')
# 如果两边关联字段名不同,替换为left_on/right_on参数即可:
# df_join = vaex_df1.join(vaex_df2, how='inner', left_on='左表关联字段名', right_on='右表关联字段名')

# 导出结果到CSV,Vaex原生导出方法,大文件也不会出现内存溢出问题
df_join.export_csv(r'C:\Users\abc\Desktop\New folder\file3.csv')

print("succes in compare")

补充注意点:

  • 如果join后需要做数据过滤、新增计算字段等操作,直接用Vaex的API处理完成后再导出,全程不会加载全量数据到内存,性能远高于pandas实现
  • 导出超大体积CSV时,可以给export_csv方法增加chunk_size参数控制单次写入的行数,进一步降低内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:27:01