Python 熊猫多索引和Pytable。。。单独索引还是一个串联索引?
当数据帧通过pytables保存到HDF5时,HDF5上的pandas多索引的结构是什么?每个部分是单独的索引还是有一个串联索引?它的存储方式几乎与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.
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