1

我使用 Pandas 创建了一个大型索引 HDF5 表。我想重命名表中 12 列中的 2 列。我不希望重建/重新索引表。

这可以在不复制所有数据(140GB)的情况下完成吗?我希望文件中只有几块元数据可以用正确的命令轻松换出。

这对我来说是因为我有一些带有空格的“非自然”列名,并且在尝试运行 select 语句之前没有意识到这是一个问题。

4

1 回答 1

1

恐怕目前没有办法重命名索引(属于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 文件

于 2016-08-03T06:40:34.990 回答