Python 熊猫多索引和Pytable。。。单独索引还是一个串联索引?

Python 熊猫多索引和Pytable。。。单独索引还是一个串联索引?,python,pandas,hdf5,pytables,Python,Pandas,Hdf5,Pytables,当数据帧通过pytables保存到HDF5时,HDF5上的pandas多索引的结构是什么?每个部分是单独的索引还是有一个串联索引?它的存储方式几乎与df.reset_index()完全相同,只是您可以自动将索引列作为数据列(这意味着您可以选择它们) 按名称选择级别 In [9]: store.select('df',where='second="b"') Out[9]: A first second 0 b -0.

当数据帧通过pytables保存到HDF5时,HDF5上的pandas多索引的结构是什么?每个部分是单独的索引还是有一个串联索引?

它的存储方式几乎与
df.reset_index()
完全相同,只是您可以自动将索引列作为数据列(这意味着您可以选择它们)

按名称选择级别

In [9]: store.select('df',where='second="b"')
Out[9]: 
                     A
first second          
0     b      -0.674645
1     b      -1.693221
2     b       0.672525

In [10]: store.select('df',where='second="b" & first=2')
Out[10]: 
                     A
first second          
2     b       0.672525

嗨,杰夫,谢谢你的深思熟虑的回复和例子。我看到了colindexes字段中引用的两个字段。我还看到了第三个字段,称为index。但我似乎对封面下的细节不够熟悉,无法从您的答案中了解两个字段的多索引是存储为两个(或三个?)独立索引还是一个串联索引。如果我猜。。。我要说的是,它们看起来是独立的索引(多索引中的每个字段对应一个索引),而不是一个串联索引。这是正确的吗?它们作为单独的列存储
In [7]: store.get_storer('df').table
Out[7]: 
/df/table (Table(9,)) ''
  description := {
  "index": Int64Col(shape=(), dflt=0, pos=0),
  "values_block_0": Float64Col(shape=(1,), dflt=0.0, pos=1),
  "second": StringCol(itemsize=1, shape=(), dflt='', pos=2),
  "first": Int64Col(shape=(), dflt=0, pos=3)}
  byteorder := 'little'
  chunkshape := (2621,)
  autoindex := True
  colindexes := {
    "index": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "second": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "first": Index(6, medium, shuffle, zlib(1)).is_csi=False}
In [9]: store.select('df',where='second="b"')
Out[9]: 
                     A
first second          
0     b      -0.674645
1     b      -1.693221
2     b       0.672525

In [10]: store.select('df',where='second="b" & first=2')
Out[10]: 
                     A
first second          
2     b       0.672525