使用Pandas创建,读取和更新hdf5文件结构

时间:2014-01-13 21:02:06

标签: python pandas hdf5 pytables

我们希望能够允许HDF5文件本身定义其列,索引和列类型,而不是维护定义HDF5数据结构的单独文件。

如何使用特定的表结构从Pandas创建一个空的HDF5文件,如:

  • id(Int)
  • name(Str)
  • update_date(datetime)
  • some_float(float)

索引

  • ID
  • 名称

创建HDF5并将其保存到磁盘后,如何检索列和索引信息,而不必每次都完全打开文件,因为它可能包含几GB的数据。

非常感谢...

- 更新 -

感谢您的评论。澄清一点:

我们对熊猫有一些经验,但绝不是真正精通。绊倒我们的部分是创建一个空的数据结构,并从一个你不想完全打开的文件中读取该结构。在所有Pandas示例中都有数据。 Pandas示例还仅显示了两种检索数据/结构的方法,即将整个帧读入内存或发出where子句。在这种情况下,我们希望能够在没有查询操作的情况下查看表结构。

我知道这是一个奇怪的案例。为什么你想要一个空的数据框?好吧,我们希望在移动数据方面具有很大的灵活性,并且希望能够在数据写入之前定义目标数据帧结构,这可能发生得更晚(例如数小时或数天)。由于HDF5规范维护所有信息,因此分别存储表结构信息似乎在方向上不正确。因此,我们希望破解这个主题的代码。

- 更新2 -

以@jeff请求添加更多详细信息。

我们想要抽象一些常见的Pandas函数,如求和数据或合并两个帧。因此,我们希望能够向每个帧询问它们的列是什么,这样我们就可以为用户提供一个视图来选择结果框架列。

例如,如果我们导入了包含A,B,C,D和V列的CSV并将帧保存为HDF5作为my_csv.hdf,那么我们就可以通过打开文件来确定列。

但是,在我们的用例中,很可能会定期清除CSV的导入帧,并且不再包含数据。知道my_csv框架具有某些列和类型的原因很重要,因为我们希望使用户能够选择这些列以便在下游操作中进行求和。假设用户想要仅将列V与列A和B中的值相加,并将该帧保存为my_sum。由于我们无法确保my_csv始终拥有数据,我们希望确保它至少包含结构。

显然可以打开其他建议。也可以将表结构信息存储在user_block中。这又是不理想的,因为结构现在保存在两个不同的区域,但我想总是可以使用框架的最新列和索引信息来保存user_block,尽管我相信to_ *操作在Pandas将吹掉user_block所以...等等。我觉得我正在谈论自己维持一个同行结构的定义,但我真的很想要一些建议而不必这样做。

0 个答案:

没有答案