如何在Python中将大型CSV文件写入HDF5?

7
我有一个数据集,大小超过了内存限制,我不想升级机器。从我的阅读中,HDF5可能是解决我的问题的合适方案。但我不确定如何迭代地将数据帧写入HDF5文件,因为我无法将CSV文件加载为数据帧对象。
所以我的问题是如何使用Python Pandas将大型CSV文件写入HDF5文件。
1个回答

11
您可以使用chunksize参数逐块读取CSV文件,并将每个块附加到HDF文件中:
hdf_key = 'hdf_key'
df_cols_to_index = [...] # list of columns (labels) that should be indexed
store = pd.HDFStore(hdf_filename)

for chunk in pd.read_csv(csv_filename, chunksize=500000):
    # don't index data columns in each iteration - we'll do it later ...
    store.append(hdf_key, chunk, data_columns=df_cols_to_index, index=False)
    # index data columns in HDFStore

store.create_table_index(hdf_key, columns=df_cols_to_index, optlevel=9, kind='full')
store.close()

Pandas实现了自己基于pytables的HDF API - 我们应该出于兼容性的原因使用那个API... - MaxU - stand with Ukraine
那么不能使用h5py吗? - Yan Song
1
@YanSong,但是说实话,我不明白使用基于“pytables”的内部Pandas方法有什么问题——您不需要了解关于“pytables”的任何信息就可以使用Pandas HDF方法... - MaxU - stand with Ukraine
1
如果列数大于2000,这种方法将会失败。 - kkkobelief24
2
@G_KOBELIEF,请说明故障的表现。谢谢! - DavidC
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接