【发布时间】:2016-12-08 01:54:31
【问题描述】:
我使用 Pandas 创建了一个大型索引 HDF5 表。我想重命名表中 12 列中的 2 列。我不想重建/重新索引表。
这可以在不复制所有数据(140GB)的情况下完成吗?我希望文件中只有几条元数据可以使用正确的命令轻松换出。
这对我来说是因为我有一些带有空格的“非自然”列名,并且直到尝试运行 select 语句时才意识到这是一个问题。
【问题讨论】:
-
AFAIK 目前还没有“公平”的方式来做到这一点,但您可以使用 this Jeff's hack
-
好主意——不过似乎对我不起作用,也许是因为我有一个索引表。我根据 Jeff 的 hack 修改了我能找到的所有“attrs”元数据——包括为我出现的一些额外字段——但“select”仍然无法识别新的列名。当我执行 s.get_storer('all').table.colindexes 时,我看到列仍然使用旧名称命名。
-
是的,使用索引列,您有更多的“作业”...检查
store.get_storer('all')以获取要重命名的列并尝试重命名它们。也看看PyTables's _f_rename() method -
是的,我做了所有这些,但我找不到合适的位置。查看 store.get_storer('all') 看起来像是我重命名了所有列。但是,store.get_storer('all').table 会同时生成具有旧名称的“tables.description.Description”对象和“tables.table._ColIndexes”对象(即使在关闭/打开商店之后)。我不确定这些 Table 内部的东西从哪里得到列名,但它不是在任何明显的(对我而言)可通过 store.get_storer('all').table.attrs 访问的地方——所有这些元数据(包括属性等因为“COL NAME_dtype”有我的新列名。
标签: python pandas hdf5 pytables hdfstore