如何高效合并逐份读取的Vaex DataFrame至总TOTALDF?
Vaex合并大空格分隔文本文件为总DataFrame的高效方案
针对你处理超大空格分隔文本文件、需要合并为Vaex总DataFrame的需求,不需要先转HDF5,直接用Vaex本身的延迟加载特性就能高效完成,以下是两种实用方案:
核心思路
Vaex的DataFrame是延迟加载的,读取文件时不会把数据全部载入内存,合并操作也只是创建虚拟的逻辑视图,不会产生额外的内存开销,完全适配超大数据集场景。
方案一:逐个读取后批量合并
先收集所有文本文件对应的Vaex DataFrame,再一次性合并,代码示例:
import vaex import glob # 获取目标目录下所有空格分隔文本文件路径 file_paths = glob.glob("/path/to/your/files/*.txt") # 逐个读取文件(vaex.read_csv支持指定空格分隔符) # 如果文件有表头,去掉header=None参数 df_list = [vaex.read_csv(path, sep=' ', header=None) for path in file_paths] # 合并为总DataFrame TOTALDF TOTALDF = vaex.concat(df_list)
方案二:直接批量读取合并(更简洁)
用Vaex的open_many方法,直接传入所有文件路径,自动完成读取与合并,代码示例:
import vaex import glob file_paths = glob.glob("/path/to/your/files/*.txt") # open_many自动识别文件格式,指定空格分隔符即可 TOTALDF = vaex.open_many(file_paths, sep=' ', header=None)
注意事项
- 如果文件是多个连续空格分隔,把
sep=' '改成sep='\s+'即可适配; - 若后续需要频繁读取合并后的数据集,可将TOTALDF保存为Vaex原生格式(如
.hdf5或.arrow),仅做一次持久化即可:TOTALDF.export("/path/to/save/TOTALDF.hdf5") - 以上两种方案全程不需要将数据载入内存,相比提前转HDF5的方式,能节省大量格式转换的时间。
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

