我有500多个PyTables
每个存储大约包含 300Mb 的数据。我想使用 pandas 将这些文件合并到一个大商店中append
如下面的代码所示。
def merge_hdfs(file_list, merged_store):
for file in file_list:
store = HDFStore(file, mode='r')
merged_store.append('data', store.data)
store.close()
追加操作非常慢(追加单个存储最多需要 10 分钟)merged_store
),奇怪的是文件大小merged_store
每个附加存储似乎都会增加 1Gb。
我已经指出了预期行的总数,根据文档应该可以提高性能,并且已阅读提高 pandas (PyTables?) HDF5 表写入性能我原本期望写入时间较长,但每 300Mb 几乎需要 10 分钟,似乎太慢了,而且我无法理解为什么会增加大小。
我想知道我是否错过了什么?
如需了解更多信息,请参阅以下 500 个 PyTable 之一的描述。
/data/table (Table(272734,)) ''
description := {
"index": Int64Col(shape=(), dflt=0, pos=0),
"values_block_0": Float64Col(shape=(6,), dflt=0.0, pos=1),
"id": StringCol(itemsize=11, shape=(), dflt='', pos=2),
"datetaken": Int64Col(shape=(), dflt=0, pos=3),
"owner": StringCol(itemsize=15, shape=(), dflt='', pos=4),
"machine_tags": StringCol(itemsize=100, shape=(), dflt='', pos=5),
"title": StringCol(itemsize=200, shape=(), dflt='', pos=6),
"country": StringCol(itemsize=3, shape=(), dflt='', pos=7),
"place_id": StringCol(itemsize=18, shape=(), dflt='', pos=8),
"url_s": StringCol(itemsize=80, shape=(), dflt='', pos=9),
"url_o": StringCol(itemsize=80, shape=(), dflt='', pos=10),
"ownername": StringCol(itemsize=50, shape=(), dflt='', pos=11),
"tags": StringCol(itemsize=505, shape=(), dflt='', pos=12)}
byteorder := 'little'
chunkshape := (232,)