小编Ada*_*ein的帖子

pandas中的HDF5字符串序列化细节?

我是Saddle(saddle.github.io)的作者,它提供了与pandas精神相似的功能(但在JVM上的Scala中).我正在努力确保pandas的DataFrame的HDF5序列化格式与Saddle的可互操作.我目前正在Saddle中实现字符串数组序列化.所以我的问题是pandas DataFrame如何序列化字符串.如果我在pandas中创建一个HDF5文件,如下所示:

from pandas import *
h = HDFStore('tmp.h5')
f = DataFrame({0: [1,2,3], 1: ["a", "b", "c"], 2: [1.5, 2.5, 3.5]})
h.put("f1", f)
h.close()
Run Code Online (Sandbox Code Playgroud)

并且h5dump生成的tmp.h5文件,我看到字符串块(block2_values)存储为数据类型H5T_VLEN和属性

 ATTRIBUTE "CLASS" {
    DATATYPE  H5T_STRING {
          STRSIZE 8;
          STRPAD H5T_STR_NULLTERM;
          CSET H5T_CSET_ASCII;
          CTYPE H5T_C_S1;
       }
    DATASPACE  SCALAR
    DATA {
    (0): "VLARRAY"
    }
 }
Run Code Online (Sandbox Code Playgroud)

这暗示了一个ASCII字符集; 但是,我看到的编码字节似乎与ASCII不对应(即"a","b","c").另外,我很好奇STRSIZE 8的来源.任何人都可以了解通过pandas - > pytables - > hdf5发生的字符串序列化的实现细节吗?(我也很满意pandas/pytables中的代码指针,我可以开始深入挖掘:)

pandas saddle

8
推荐指数
1
解决办法
1165
查看次数

标签 统计

pandas ×1

saddle ×1