我使用 Pandas 创建了一个大型索引 HDF5 表。我想重命名表中 12 列中的 2 列。我不希望重建/重新索引表。
这可以在不复制所有数据(140GB)的情况下完成吗?我希望文件中只有几块元数据可以用正确的命令轻松换出。
这对我来说是因为我有一些带有空格的“非自然”列名,并且在尝试运行 select 语句之前没有意识到这是一个问题。
恐怕目前没有办法重命名索引(属于data_columns
)列,因为这需要storer.table.colindexes
在对象中和storer.table.description
对象中进行更改,并且它们都是特定类型:
In [29]: store.get_storer('df').table
Out[29]:
/df/table (Table(10,)) ''
description := {
"index": Int64Col(shape=(), dflt=0, pos=0),
"a": Int32Col(shape=(), dflt=0, pos=1),
"b": Int32Col(shape=(), dflt=0, pos=2),
"c": Int32Col(shape=(), dflt=0, pos=3)}
byteorder := 'little'
chunkshape := (3276,)
autoindex := True
colindexes := {
"a": Index(6, medium, shuffle, zlib(1)).is_csi=False,
"index": Index(6, medium, shuffle, zlib(1)).is_csi=False,
"c": Index(6, medium, shuffle, zlib(1)).is_csi=False,
"b": Index(6, medium, shuffle, zlib(1)).is_csi=False}
In [30]: type(store.get_storer('df').table.colindexes)
Out[30]: tables.table._ColIndexes
In [31]: type(store.get_storer('df').table.description)
Out[31]: tables.description.Description
如果您尝试用谷歌搜索 PyTables 解决方案,您会发现这个问题,但没有/没有答案可以让您重命名列。
所以你可能想重新创建你的 HDF5 文件